Migrasi Data MS SQL ke PostgreSQL

Foto os

Berikut ini salah satu cara untuk migrasi data dari MS SQL Server ke PostgreSQL.

Ambil paket python-mssql di:

ftp://kebo.vlsm.org/debian/pool/main/p/pymssql/

Pasanglah:

# dpkg -i python-pymssql_0.8.0+dfsg-2_i386.deb

Untuk arsitektur 64bit bisa ambil di:

http://debian.rab.co.id/campur/

Ambillah script mssql-dump.py. Ubahlah untuk menyesuaikan host, username, dan password ke SQL Server. Lalu jalankan:

$ python mssql-dump.py > dbname.sql

Selanjutnya jalankan restore ke PostgreSQL:
$ psql -U myuser mydb -h localhost -f dbname.sql

Idealnya proses berlangsung lancar, namun bila Anda menjumpai pesan:

_mssql.error: SQL Server message 4004, severity 16, state 1, line 1:
Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier.

bisa dipastikan ada tabel yang memiliki field bertipe NTEXT. Ini memang tipe data bermasalah sebagaimana yang dijelaskan di:

http://pymssql.sourceforge.net/troubleshooting.html#unicode

Jalan keluarnya adalah dengan mengubah tipenya menjadi TEXT, lalu lakukan lagi proses dump. Namun kalau cara ini merepotkan Anda bisa ikuti langkah berikut ini:

  1. Buat tabel dengan nama yang sama dengan tabel yang bermasalah, namun beri awalan __ (underscore dua kali), contoh: __pegawai. Struktur tabel ini sama dengan tabel aslinya, namun field bertipe NTEXT diganti menjadi bertipe TEXT.
  2. Isi tabel __pegawai sesuai data dari tabel aslinya, tabel pegawai.
  3. Jalankan lagi mssql-dump.py yang sudah memahami situasi ini.

Proses 1-2 bisa Anda wakilkan ke script mssql-repair.py. Lalu jalankan:

$ python mssql-repair.py dbname
$ python mssql-dump.py dbname > dbname.sql

Proses dump ini sebatas data saja, belum mencakup constraint seperti PRIMARY KEY, FOREIGN KEY, dsb.

Semoga beruntung.

LampiranUkuran
mssql-dump.py_.txt3.1 KB
mssql-repair.py_.txt3.03 KB