Skrip PHP Sederhana Konversi MS SQL Server ke MySQL

3 minutes 1,773 1

Awalnya dari kerjaan kantor yang berhubungan dengan database MS SQL Server.

Untuk mempermudah proses pengembangan, saya biasa mengunduh database di server produksi untuk kemudian diunggah ke database pengembangan yang berada di laptop. Keuntungannya, saya bisa bekerja tanpa bergantung pada koneksi internet untuk terhubung ke server.

MS SQL - PHP - MySQL

Namun karena saya menggunakan OSX, menggunakan MS SQL Server adalah tidak masuk akal. Saya pun berpikir untuk mengkonversi struktur dan isi database MS SQL Server tersebut ke MySQL.

Saya pun googling dan menemukan beberapa cara untuk melakukan konversi MS SQL Server ke MySQL. Salah satu cara yang disarankan adalah menggunakan Database Migration pada MySQL Workbench 6.0.

Sayangnya, ada masalah dengan driver, yang ternyata iODBC yang digunakan tidak kompatibel, berbeda arsitektur (iODBC yang digunakan OSX menggunakan 32 bit, sedangkan driver FreeTDS menggunakan 64 bit). Pesan kesalahannya seperti berikut:

Could not connect to Source DBMS.
[00000] [iODBC][Driver Manager]dlopen(/usr/local/freetds/lib/libtdsodbc.so, 6): no suitable image found. Did find: /usr/local/freetds/lib/libtdsodbc.so: mach-o, but wrong architecture (0) (SQLDriverConnect)

Karena saya malas mengutak-atik lebih lanjut, saya pun membuat sebuah skrip PHP sederhana untuk melakukan konversi MS SQL Server ke MySQL Server.

Yang dibutuhkan untuk menjalankan skrip ini adalah FreeTDS, PHP CGI, modul PHP-MSSQL, dan modul PHP-MYSQL. FreeTDS merupakan driver untuk terhubung ke MS SQL Server, PHP CGI merupakan perintah command line untuk menjalan skrip PHP dari terminal, PHP-MSSQL merupakan modul PHP untuk terhubung ke MS SQL Server melalui Free TDS, dan PHP-MYSQL digunakan untuk koneksi ke MySQL.

Keterbatasan dari skrip ini ada beberapa, yaitu:

  1. Hanya menyalin struktur tabel dari MS SQL ke MySQL tanpa menyalin index dan autoincrement.
  2. Perintah yang digunakan adalah DROP TABLE dan CREATE TABLE, jika di tengah jalan proses terhenti karena koneksi terputus, maka proses akan diulang dari awal.
  3. Tidak berlaku untuk procedure dan temporary table.
  4. Keterbatasan fungsi yang disediakan oleh PHP-MSSQL.
  5. Tidak berlaku untuk tipe data MS SQL cursor, hierarchyid, sql_variant, tablexml, dan tipe data spasial.

Jika menemukan bugs atau punya tambahan untuk mengakomodasi keterbatasan di atas, silakan pull request saya di halaman Github mssql2mysql.

1 response
  1. Gravatar of Aad
    Aad

    sekali-kali pengen posting script2 juga ah~