Saya putus asa mencari alat konversi untuk mengkonversi database mysql besar ke postgresql. Saya membutuhkan alat / skrip untuk menjadi:
- Gratis
- Bekerja di Linux
- Mudah digunakan dan tidak bermasalah
- Anda benar-benar mencoba dan mengonfirmasi bahwa itu berhasil
- Lebih disukai, tidak ditulis dengan Java atau Ruby
Saya telah mencoba berbagai alat yang tercantum di sini , tetapi tidak ada yang berhasil untuk saya.
Terima kasih sebelumnya.
mysql
postgresql
linux
hbp
sumber
sumber
Jawaban:
Migrasi antara dua DBMS sangat berbeda membutuhkan banyak lebih dari sekedar migrasi data. Tetapi migrasi data biasanya merupakan bagian yang paling mudah.
Cara yang saya coba, yang gratis dan saya dapat mengkonfirmasi bahwa itu berfungsi:
Mengimpor data mungkin sebenarnya sulit jika Anda mengandalkan perilaku MySQL untuk menerima data ilegal (seperti 31 Februari)
Dugaan saya adalah, bahwa ini akan lebih cepat daripada mencari alat, mengevaluasi banyak dari mereka dan kemudian mencoba memahami yang Anda pilih. Tapi itu tergantung pada "besar" macam apa yang Anda maksud. Jika besar beberapa ratus tabel ini mungkin tidak layak. Jika besar hanya merujuk pada jumlah baris, maka ini mungkin cara tercepat untuk melakukannya.
Ada beberapa alat di luar sana yang dapat membuang skema basis data dalam format DBMS independen (XML), seperti Liquibase , SchemaSpy atau WbSchemaReport . Dengan Liquibase mungkin menjadi yang paling mudah digunakan. Yang lain akan membutuhkan beberapa pekerjaan manual menulis / memperluas XSLT untuk mengubah XML yang dihasilkan.
Jika Anda menggunakan pemicu dan prosedur tersimpan di MySQL, saya tidak percaya akan ada alat otomatis yang dapat menerjemahkannya tanpa memerlukan perbaikan manual besar sesudahnya - dan kemudian prosedur yang dihasilkan mungkin tidak akan menggunakan fitur canggih apa pun dari target DBMS .
sumber
Harus melakukannya baru-baru ini dan karena itu akan memakan waktu terlalu lama untuk mencari alat dan dapat melakukan hal-hal dengan itu, saya melakukannya per tangan dengan vim dan substitusi-foo
INT NOT NULL AUTO_INCREMENT
(atau yang seperti ini) denganSERIAL
TEXT
(tidak ada perbedaan kecepatan dalam menggunakanTEXT
,VARCHAR
atau serupa)`
ENGINE InnoDB
(atau apa pun)UNSIGNED
BYTEA
'
dan tidak ada yang lainCONCAT
sebagai fallback untuk penggabungan string non-standar, sebelum 9.1 dilakukan dengan menggunakan'string' || ' string'
"
Masing-masing peluru itu harus dilakukan dengan satu penggantian.
Saya diekspor skema dan data seperatly . Pastikan Anda menggunakan
INSERT
s bukanCOPY
. Jika tidak ada hal-hal keuangan terjadi, data harus memerlukan (hampir) tidak ada pembersihan. Pastikan semuanya menyalaUTF-8
. Dengan 2 file terpisah, skema menjadi lebih mudah dikelola dan Anda tidak memiliki file 1GB untuk diedit.Saat memuat skema, Anda mendapatkan informasi yang cukup terperinci di mana kesalahan terjadi, jadi debugging harus cukup sederhana.
sumber
Saya melempar ini ke luar, karena belum pernah mencobanya, tetapi Tungesten Replicator dapat melakukan apa yang Anda inginkan. Ini terutama alat replikasi, tapi saya pikir itu mungkin memiliki proses bootstrap yang dapat membantu Anda setidaknya dengan potongan data.
sumber