Bagaimana cara mengubah database MySQL ke PostgreSQL?

20

Apakah ada alat baris perintah untuk mengubah database MySQL ke PostgreSQL? Saya juga ingin tahu apakah ada cara untuk mengkonversi database menggunakan mysqldumpperintah normal .

Mughil
sumber
1
Mulai di sini: wiki.postgresql.org/wiki/…
a_horse_with_no_name
4
Setiap kali saya melihat ini, saya menangis sedih.
rfusca
ora2pg.darold.net
a_horse_with_no_name
Ini adalah salah satu pertanyaan paling berguna di seluruh situs ini.
Evan Carroll

Jawaban:

13

sudahkah anda mencoba:

mysqldump --compatible=postgresql dbname > export.sql

kemudian lakukan ini untuk menghindari kutip

sed "s/\\\'/\'\'/g" export.sql > export1.sql

mungkin perlu dipijat lagi jadi lihatlah mysqldump doco lebih dekat.

Nick Kavadias
sumber
2
Saya sudah mencoba metode yang Anda berikan tetapi ini memberikan kesalahan ketika memulihkan di postgresql
Mughil
2
@ Mughil apa kesalahannya?
Janus Troelsen
4
5 tahun dan mysqldumpbelum ada yang diperbaiki . syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
Cees Timmerman
1
Menurut dev.mysql.com/doc/refman/8.0/en/… satu-satunya nilai yang diizinkan --compatibleadalahansi
phunehehe
7

Berikut adalah beberapa alat sumber terbuka, yang bisa sangat membantu:

FromMySqlToPostgreSql adalah alat jangkauan fitur dan sangat mudah digunakan.
Memetakan tipe data, memigrasikan batasan, indeks, PK dan FK persis seperti yang ada di db MySQL Anda.
Di bawah tenda itu menggunakan COPY PostgreSQL, jadi transfer data sangat cepat.
FromMySqlToPostgreSql ditulis dalam PHP (> = 5.4).

pgloader   adalah alat pemuatan data untuk PostgreSQL, menggunakan perintah COPY. Keuntungan utamanya dibandingkan hanya menggunakan

COPY
atau
\copy
, dan lebih menggunakan Pembungkus Data Asing, adalah perilaku transaksinya, di mana pgloader akan menyimpan file terpisah dari data yang ditolak, tetapi terus mencoba menyalin data yang baik di database Anda. Perilaku PostgreSQL default adalah transaksional, yang berarti bahwa setiap garis yang salah dalam data input (file atau basis data jauh) akan menghentikan seluruh beban massal untuk tabel. pgloader juga mengimplementasikan pemformatan ulang data, contoh khasnya adalah transformasi datestamps MySQL 0000-00-00 dan 0000-00-00 00:00:00 ke PostgreSQL
NULL
nilai (karena kalender kami tidak pernah memiliki nol tahun).
pgloader ditulis dalam LISP dan didistribusikan sebagai kode sumber, jadi Anda harus mengompilasinya sebelum menggunakannya.

Semoga ini akan membantu Anda ...

AnatolyUss
sumber
1
pgloader bahkan direkomendasikan sebagai alat migrasi pada dokumen postgre, jadi saya akan mengatakan itu adalah pilihan terbaik. Saya telah menggunakannya dengan sukses pada DB yang cukup kecil dengan 50+ tabel, bekerja seperti pesona.
Capaj
3

Sebenarnya ada alat migrasi gratis yang cukup mudah digunakan, dikembangkan oleh EnterpriseDB sendiri. Itu dapat diinstal melalui StackBuilder: Migration Toolkit

uygar.raf
sumber
3

Baru-baru ini saya menggunakan alat yang tidak bebas dari DBConvert untuk mengubah akses basis data ke postgres, dan menemukan bahwa itu sepadan dengan uang dibandingkan dengan jumlah waktu yang saya sia-siakan untuk melakukannya dengan andal gratis. Jual alat serupa untuk postgres MySQL <-> , yang belum saya gunakan, tetapi mungkin patut dipertimbangkan kecuali Anda hanya tertarik pada alat-alat baris perintah.

Jika Anda bertanya-tanya saya tidak berafiliasi dengan mereka dengan cara apa pun :-)

Jack Douglas
sumber
3

Anda dapat menggunakan EnterpriseDB Migration Wizard, misalnya.

Itu dapat dengan mudah melakukan migrasi OracleDB. Tetapi untuk Mysql, ia memiliki beberapa keterbatasan, misalnya, tidak mendukung tampilan, pemicu, prosedur tersimpan.

Untuk selengkapnya, lihat EDB Migration Toolkit . Tidak yakin, tetapi dimungkinkan untuk melakukan migrasi mysql-> oracle-> postgresql menyimpan prosedur tersimpan Anda (jika ada).

Grep ini: Database dan Alat Migrasi SQL

shcherbak
sumber
1

Ini hanya untuk menambah jawaban yang ada, yang membantu saya menemukan solusi ini. Saya menggunakan FromMySqlToPostgreSql . Yang perlu Anda lakukan adalah mengunduh dan mengekstrak FromMySqlToPostgreSql , membuat salinan contoh file konfigurasi, menetapkan nilai koneksi db di dalamnya, dan menjalankan file indeks dengan perintah berikut:

php index.php config.xml

Sederhana namun efektif!

toing_toing
sumber
Bisakah Anda mengedit posting Anda dengan tautan ke alat ini?
dezso
Maaf, saya lupa itu. Ditambahkan!
toing_toing
Ah, ini lucu. Pernahkah Anda menyadari bahwa pembuat alat juga telah mengirim jawaban? ;) Sekarang saya lakukan.
dezso
Aku tersanjung! Dia belum banyak menjelaskan tentang plugin yang luar biasa.
toing_toing
0

Ada alat opensource yang menyediakan fungsionalitas untuk mengubah MySQL db menjadi Postgresql db termasuk dalam indeks, fks, dan data.

https://github.com/ggarri/mysql2psql

Alat ini juga memungkinkan untuk menentukan perubahan skema sehingga Anda dapat melakukan beberapa peningkatan pada skema Anda saat ini dalam waktu berjalan.

Gabriel Garrido
sumber