dblink 연결
초기 준비:
posrgresql 9.1 이상 버 전 설치
mysql 설치
mysql 다운로드fdw
(post gresql 과 my sql 설치 과정 은 다른 글 참조)
mysql 설치fdw:
환경 변수 설정:
vi ~/.bash_profile
export PATH=/usr/local/bin:/usr/local/mysql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/mysql/lib
source ~/.bash_profile
컴 파일 설치:
다운 로드 된 my sqlfdw, 압축 해제 디 렉 터 리 에 들 어가 기make USE_PGXS=1
make USE_PGXS=1 install
메모: 설치 사용 루트 사용자 설치
dblink 테스트 사용:
my sql 에서 사용자 와 데이터 베 이 스 를 만 듭 니 다:mysql> create user vince;
Query OK, 0 rows affected (0.00 sec)
mysql> create database vince_db ;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on vince_db.* to 'vince'@'localhost' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on vince_db.* to 'vince'@'%' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> use vince_db;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table test(a integer ,b text);
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test(a,b)values (1,'a');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test(a,b)values (2,'b');
Query OK, 1 row affected (0.00 sec)
post gresql 단 에 dblink 링크 만 들 기:-- Create the require functions for the FDW.
CREATE FUNCTION mysql_fdw_handler()
RETURNS fdw_handler
AS '$libdir/mysql_fdw'
LANGUAGE C STRICT;
CREATE FUNCTION mysql_fdw_validator(text[], oid)
RETURNS void
AS '$libdir/mysql_fdw'
LANGUAGE C STRICT;
-- Create the data wrapper or "transport".
CREATE FOREIGN DATA WRAPPER mysql_fdw
HANDLER mysql_fdw_handler
VALIDATOR mysql_fdw_validator;
-- Create the foreign server, a pointer to the MySQL server.
CREATE SERVER mysql_svr
FOREIGN DATA WRAPPER mysql_fdw
OPTIONS (address '127.0.0.1', port '3306');
CREATE USER MAPPING FOR PUBLIC
SERVER mysql_svr
OPTIONS(username 'vince',password '');
create foreign table test ( a integer,b text) server mysql_svr options(table 'vince_db.test');
테스트:
조회:pgdb1=# select * from test;
a | b
---+---
1 | a
2 | b
(2 rows)
연결:pgdb1=# create table mysql_test(a integer,b text);
CREATE TABLE
pgdb1=# insert into mysql_test(a,b) values(1,'a');
INSERT 0 1
pgdb1=# select * from test t1,mysql_test t2 where t1.a=t2.a;
a | b | a | b
---+---+---+---
1 | a | 1 | a
(1 row)
삽입:pgdb1=# insert into test(a,b) values (3,'c');
ERROR: cannot change foreign table "test"
업데이트:pgdb1=# update test set b='c' where a=1;
ERROR: cannot change foreign table "test"
결론:
mysql_fdw 는 post gresql 을 my sql 에 연결 시 켜 조회, 관련 등 작업 을 잘 할 수 있 으 나 겉 으로 는 추가 와 업데이트 작업 을 할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.