Cara mengekspor data dari SQL Server 2005 ke MySQL [ditutup]

88

Saya telah membenturkan kepala saya untuk SQL Server 2005mencoba mendapatkan banyak data. Saya telah diberikan database dengan hampir 300 tabel di dalamnya dan saya perlu mengubahnya menjadi database MySQL. Panggilan pertama saya adalah menggunakan bcp tetapi sayangnya itu tidak menghasilkan CSV yang valid - string tidak dienkapsulasi, jadi Anda tidak dapat menangani baris apa pun yang memiliki string dengan koma di dalamnya (atau apa pun yang Anda gunakan sebagai pembatas) dan saya masih harus menulis sendiri semua pernyataan buat tabel, karena jelas CSV tidak memberi tahu Anda apa pun tentang tipe data.

Apa yang lebih baik adalah jika ada beberapa alat yang dapat terhubung ke SQL Server dan MySQL, kemudian lakukan penyalinan. Anda kehilangan tampilan, prosedur tersimpan, pemicu, dll, tetapi tidak sulit untuk menyalin tabel yang hanya menggunakan tipe dasar dari satu DB ke DB lainnya ... bukan?

Apakah ada yang tahu tentang alat seperti itu? Saya tidak keberatan berapa banyak asumsi yang dibuatnya atau penyederhanaan apa yang terjadi, asalkan mendukung integer, float, datetime dan string. Saya harus melakukan banyak pemangkasan, normalisasi, dll. Jadi saya tidak peduli tentang menyimpan kunci, hubungan, atau semacamnya, tetapi saya membutuhkan kumpulan data awal dengan cepat!

Tikar
sumber
1
Saya pernah mendengar beberapa orang menggunakan MSSQL2MySQL dengan sukses, tetapi saya sendiri tidak dapat menjaminnya.
Greg Hurlman
1
Saya pernah mendengar bahwa SQLYob bisa melakukannya. < webyog.com/en > di sini: < searchsqlserver.techtarget.com/tip/… >
borjab
Alat ini persis seperti yang Anda minta: Konversi Perusahaan Penuh . Benar, Anda kehilangan tampilan, prosedur, dan pemicu, tetapi ini sangat dioptimalkan untuk tabel besar. Solusi lain (lebih mahal) yang menerjemahkan semua objek (prosedur, dll.) Adalah SqlTran SQL Server ke MySQL
Damir Bulic
1
Jawaban serupa di sini: stackoverflow.com/questions/11619177/…
Jacob
1
@borjab: SQLyog digunakan untuk bekerja dengan ODBC di versi yang lebih lama tetapi sekarang tidak lagi, jadi ini bukan opsi untuk pekerjaan ini.
BlaM

Jawaban:

59

Cara terbaik yang saya temukan adalah MySQL Migration Toolkit yang disediakan oleh MySQL. Saya telah berhasil menggunakannya untuk beberapa proyek migrasi besar.

Nick Berardi
sumber
2
+1 - Sekarang EOL, dan MySQL Workbench akan menyertakan plugin migrasi (versi sebelumnya 5.2) tetapi untuk saat ini gunakan tautan berikut: dev.mysql.com/downloads/gui-tools/5.0.html
Mark Robinson
tidak ingin mengonversi kolom DATE atau DATETIME :(
Robert Ivanc
1
Catatan: Saat ini, MySQL Migration Toolkit tidak tersedia untuk Linux (dari dev.mysql.com/doc/migration-toolkit/en/… )
mkirk
1
Perhatikan bahwa My SQL Migration Toolkit memerlukan versi 32-bit JDK 5 update 8 atau yang lebih baru (harus ver 5, ver 6 tidak akan berfungsi), yang dapat Anda unduh di sini: tinyurl.com/5snd6y3
casterle
9

Menggunakan MSSQL Management Studio saya telah melakukan transisi tabel dengan MySQL OLE DB. Klik kanan pada database Anda dan pergi ke "Tugas-> Ekspor Data" dari sana Anda dapat menentukan sumber MsSQL OLE DB, sumber MySQL OLE DB dan membuat pemetaan kolom antara dua sumber data.

Kemungkinan besar Anda ingin mengatur database dan tabel terlebih dahulu di tujuan MySQL (ekspor akan ingin membuat tabel secara otomatis, tetapi ini sering kali mengakibatkan kegagalan). Anda dapat dengan cepat membuat tabel di MySQL menggunakan "Tugas-> Hasilkan Skrip" dengan mengklik kanan pada database. Setelah skrip kreasi Anda dibuat, Anda harus melangkah dan mencari / mengganti kata kunci dan jenis yang ada di MSSQL ke MYSQL.

Tentu saja Anda juga dapat membuat cadangan database seperti biasa dan menemukan utilitas yang akan memulihkan cadangan MSSQL di MYSQL. Namun saya tidak yakin apakah ada.


sumber
9

Edisi SQL Server 2005 "Standard", "Developer" dan "Enterprise" memiliki SSIS , yang menggantikan DTS dari SQL server 2000. SSIS memiliki koneksi bawaan ke DB-nya sendiri, dan Anda dapat menemukan koneksi yang telah ditulis orang lain MySQL. Inilah salah satu contohnya. Setelah Anda memiliki koneksi, Anda harus dapat membuat paket SSIS yang memindahkan data di antara keduanya.

Saya tidak perlu memindahkan data dari SQLServer ke MySQL, tetapi saya membayangkan bahwa setelah koneksi MySQL dipasang, ini berfungsi sama seperti memindahkan data antara dua SQLServer DB, yang cukup mudah.

Sean
sumber
8

Menggulirkan solusi PHP Anda sendiri pasti akan berfungsi meskipun saya tidak yakin apakah ada cara yang baik untuk menduplikasi skema secara otomatis dari satu DB ke DB lainnya (mungkin ini pertanyaan Anda).

Jika Anda hanya menyalin data, dan / atau Anda memerlukan kode khusus untuk mengkonversi antara skema yang dimodifikasi antara dua DB, saya akan merekomendasikan menggunakan PHP 5.2+ dan perpustakaan PDO. Anda akan dapat terhubung menggunakan PDO ODBC (dan menggunakan driver MSSQL). Saya mengalami banyak masalah saat memasukkan bidang teks besar dan karakter multi-byte dari MSSQL ke PHP menggunakan pustaka lain.

pix0r
sumber
6

Alat lain untuk dicoba adalah suite SQLMaestro . Agak sulit untuk menentukan alat yang tepat, tetapi mereka memiliki berbagai alat, baik gratis maupun untuk pembelian yang menangani berbagai macam tugas untuk beberapa platform database. Saya sarankan untuk mencoba alat Data Wizard terlebih dahulu untuk MySQL, karena saya yakin itu akan memiliki alat "impor" yang tepat yang Anda butuhkan.

Dillie-O
sumber