Mssql to Postgres (Foreign Data Wrappers)

 


Steps melakukan setup FDW dari Mssql to Postgres :

# Persyaratan sebelum setup
1. Pastikan koneksi antara MsSQL dan PostgreSQL terkoneksi dan tidak ada Firewal yang melakukan blocking pada port database dari PostgreSQL to MsSQL. 


# Disisi MsSQL yang perlu dilakukan :

1. Siapkan user dan list tabel yang akan di fdw kan.
Sebagai contoh saya menggunakan 
- User : SA
- Port : 1433
- Database : mssql_testing

Contoh tabel yang akan di daftarkan :
- Tabel dengan nama "mhs_table" (nim int, nama varchar, alamat varchar)

CREATE TABLE mssql_testing.dbo.mhs_table (

id int NULL,

nama varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,

alamat varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL

);

INSERT INTO mssql_testing.dbo.mhs_table (id,nama,alamat) VALUES

(18101,N'indroid',N'Jakarta'),

(18102,N'raw',N'Tanggerang'),

(18103,N'waldi',N'Riau'),

(18104,N'ubuy',N'Ciamis'); 

 




    Note : jika user yang digunakan bukan menggunakan super user pastikan user            tersebut sudah diberikan hak akses pada tabel yang akan di fdwkan (GRANT). 


# Disisi PostgreSQL yang perlu dilakukan :

Persiapan :

1. Install dependensi berikut :

$ sudo apt install freetds-devel freetds-doc freetds-common libsybdb5
2. Download tds_fdw disini kemudian install

extract file yang sudah di download 
cd tds_fwd
sudo PATH=/usr/pgsql-11.5/bin:$PATH make USE_PGXS=1
Sesuai path binary PostgreSQL kalian.

3. Sekarang disisi database 

CREATE EXTENSION tds_fdw; 


 

 - Membuat koneksi ke mssql

CREATE SERVER mssql_conn FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername '127.0.0.1', port '1433', database 'mssql_testing', tds_version '7.1');

Note: karena server nya di lokal jadi servernamanya ke lokal kalau beda server tinggal sesuaikan saja IP nya. 

- Membuat user mapping yang digunakan untuk tabel fdw nya. 

CREATE USER MAPPING FOR pgsql SERVER mssql_conn OPTIONS (username 'sa',password 'xxxxxxxxx');

- Membuat tabel FDW  

CREATE FOREIGN TABLE mhs_table (id int, nama varchar, alamat varchar) SERVER mssql_conn OPTIONS ( table_name 'dbo.mhs_table', row_estimate_method 'showplan_all' );

Note: nama tabel harus sama dan bisa membuat kolom yang akan di pilih saja, namun nama kolom dan type kolom harus sama dengan source 



Note: 
- hitam = syntax
- biaru = paramter
- merah = value / string


Berikut hasilnya :





0 komentar