PostgreSQL <> MySQL

Gilang Virga Perdana
4 min readSep 15, 2021

Halo teman teman, kembali lagi bersama saya Gilang. Disini saya ingin berbagi tips & trik untuk migrasi schema database dari PostgreSQL ke MySQL menggunakan postgresql_dump. Baik, langsung saja kita membuat studi kasus dan mencoba untuk migrasikan skema yang ada.

Environment :

1. pgAdmin4

2. PHPmyadmin

3. Visual Studio Code

Percobaan :

PostgreSQL to MySQL

  1. Buka pgadmin :

Silahkan untuk melihat nama database yang ingin kalian migrasikan :

Disini saya ingin me-migrasikan database dengan nama EmployeeDB yang ada pada PostgreSQL ini ke MySQL (agar nantinya kita bisa import ke PHPmyadmin).

Adapunn Skema Table yang akan saya migrasikan kurang lebih seperti ini :

2. Export menjadi postgresql_dump :

Setelah sudah fix menentukan database mana yang akan di export silahkan kalian buka terminal kalian, disini saya menggunakan CMD bawaan windows dan arahkan ke ‘C:\Program Files\PostgreSQL\13\bin lalu ketikkan perintah berikut untuk export :

$ pg_dump -U {user} -s {Nama_DB} > {path_file_convert}$ pg_dump -U postgres -s EmployeeDB > D:\EmployeeDB.sql

Silahkan sesuaikan user dan nama database dengan environment masing masing.

Jika sudah, silahkan cek pada path extract yang sudah kalian tentukan (dikasus ini saya taruh di Disk D).

Terlihat, file dump sudah hadir di Path yang sudah kita tentukan.

3. Convert postgresql_dump :

Setelah postgresql_dump sudah terbuat, silahkan buka menggunakan Text Editor (saya menggunakan VSCode, copas script lalu convert online (tidak harus website yang saya berikan) di http://www.lightbox.ca/pg2mysql.php .

Lalu paste pada website :

Setelah paste, silahkan covert to MySQL :

Setelah di konvert sbb:

Copy paste script hasil convert ke file baru.

4. Silahkan buat file dengan ekstensi .sql lalu import ke PHPmyadmin :

Save, lalu ganti beberapa konfigurasi.

5. Ganti beberapa konfigurasi :

a. TYPE=MyISAM; ganti semua menjadi ENGINE=MyISAM;

b. Rubah public menjadi nama database kalian, saya akan merubah menjadi ‘migrate1’ karena database pada phpmyadmin saya bernama ‘migrate1’.

Kurang lebih menjadi seperti ini :

6. Import pada PHPmyadmin :

Setelah semua terkonfigurasi, silahkan import pada PHPmyadmin dengan tidak lupa untuk membuat database terlebih dahulu.

Dan, voilaa. Skema berhasil terimport namun INGAT, bahwa ini baru skema belum demikian data pada masing masing table. Untuk data pada masing masing table kalian bisa export sebagai CSV terlebih dahulu pada PostgreSQL lalu import CSV pada masing masing table di PHPmyadmin. Dan satu lagi, bahwa cara ini terkadang tidak membawa PRIMARY_KEY per masing masing table, silahkan untuk set PRIMARY_KEY pada masing masing terlebih dahulu.

MySQL to PostgreSQL

Jika sebelumnya kita sudah melakukan migrasi dari PostgreSQL ke MySQL. Sekarang kita akan mencoba membalikannya, yakni MySQL ke PostgreSQL. Langsung saja kita ke praktiknya, ini adalah cara yang biasa saya lakukan :

Persiapkan Environment :

Gunakan MySQL versi 5.7 dengan Docker.
$ docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
$ docker cp your_db.sql mysql:/root/$ docker exec -it mysql bash
$ cd /root/
$ mysql -u root -p
$ CREATE DATABASE your_db_name;
$ exit
$ mysql -u root -p your_db_name < your_db.sql
  1. Dump Database pada MySQL :
$ mysqldump -u root -p nama_database --compatible=postgresql --default-character-set=utf8 > database.mysql

2. Clone script converter berbasis python3 :

$ git clone https://github.com/gilangvperdana/mysql-postgresql-converter-python3

3. Eksekusi :

$ python3 db_converter.py database.mysql database.psql

4. Import ke PGAdmin :

Buka database.psql lalu copas. Isi pada query tool di pgadmin4 lalu execute.

Cara ini adalah cara unofficial, hanya cara yang biasa dilakukan penulis pada saat migrasi.

Semoga bermanfaat, terima kasih.

--

--