Bir PostgreSQL Servardan SQL Serverdaki verilere erişmek için FDW kullanabiliriz, burada bu extension nasıl kurulur, ve SQL serverdaki bir tablo, PostgreSQL içerisinden nasıl sorgulanır, bunları örnekleyeceğiz;
Öncelikle Kurulumunu gerçekleştirelim;
# sudo apt-get update
# sudo apt-get install libsybdb5 freetds-dev freetds-common
# sudo apt install postgresql-server-dev-14
# sudo apt install make
# sudo apt install gcc
# sudo apt-get install gnupg
TDS fwd kurulumu için https://github.com/tds-fdw/tds_fdw/blob/master/InstallUbuntu.md
# export TDS_FDW_VERSION="2.0.3"
# sudo apt-get install wget
# wget https://github.com/tds-fdw/tds_fdw/archive/v${TDS_FDW_VERSION}.tar.gz
# tar -xvzf v${TDS_FDW_VERSION}.tar.gz
# cd tds_fdw-${TDS_FDW_VERSION}/
# find / -type f -name "pg_config"
# /usr/bin/pg_config
# /usr/lib/postgresql/14/bin/pg_config
# make USE_PGXS=1
--Birden fazla Cluster varsa
--# make USE_PGXS=1 PG_CONFIG=/usr/lib/postgresql/14/bin/pg_config
# sudo make USE_PGXS=1 install
tds_fdw extension create komutunu çalıştıralım;
postgres=# CREATE EXTENSION tds_fdw;
CREATE EXTENSION
Şimdi Mssql Server bağlantısı için FDW de ne yapmalıyız;
İlk olarak bir server create ediyoruz;
postgres=# CREATE SERVER mssql_server FOREIGN DATA WRAPPER tds_fdw OPTIONS(servername '192.168.5.134 ',database 'Test',port '1433');
CREATE SERVER
Server içerisine bir Mssql user, database ile postgres database mapping işlemini yapıyoruz
postgres=# CREATE USER MAPPING FOR postgres SERVER mssql_server OPTIONS (username 'sa', password 'Welcome123');
CREATE USER MAPPING
Şimdi ise mssql ortamında olan bir tabloyu alarak postgreSQL tarafında bağlama sürecini yapacağız;
SQL Serverda ki tablomuzu kontrol edelim;
PostgreSQL de Foreign Tablomuzu oluşturalım;
CREATE FOREIGN TABLE test(
id int,
isim nchar(10),
soyisim nchar(10) ,
tel bigint,
adres text
)
SERVER mssql_server
OPTIONS (query 'SELECT * FROM dbo.test');
Postgresteki Foreign Tabloya sorgu atalım;
postgres=# select * from test;
NOTICE: tds_fdw: Query executed correctly
NOTICE: tds_fdw: Getting results
id | isim | soyisim | tel | adres
----+------------+------------+------------+--------
1 | Faruk | Cevik | 5051112233 | Ankara
(1 row)
Planına bakalım;
postgres=# explain
postgres-# select * from test;
NOTICE: tds_fdw: Query executed correctly
NOTICE: tds_fdw: Getting results
QUERY PLAN
--------------------------------------------------------------
Foreign Scan on test (cost=200.00..200.01 rows=1 width=100)
(1 row)
postgres=# explain analyse
postgres-# select * from test;
NOTICE: tds_fdw: Query executed correctly
NOTICE: tds_fdw: Getting results
QUERY PLAN
--------------------------------------------------------------------------------------------------------
Foreign Scan on test (cost=200.00..200.01 rows=1 width=100) (actual time=0.732..0.734 rows=1 loops=1)
Planning Time: 7.395 ms
Execution Time: 6.446 ms
(3 rows)
Bir yanıt yazın