Come esportare dati da SQL Server 2005 a MySQL [chiuso]


86

Ho battuto la testa contro il SQL Server 2005tentativo di ottenere molti dati. Mi è stato fornito un database con quasi 300 tabelle e ho bisogno di trasformarlo in un database MySQL. La mia prima chiamata è stata quella di utilizzare bcp ma sfortunatamente non produce un CSV valido: le stringhe non sono incapsulate, quindi non puoi gestire nessuna riga che ha una stringa con una virgola (o qualunque cosa tu usi come delimitatore) e dovrei comunque scrivere a mano tutte le istruzioni create table, poiché ovviamente CSV non ti dice nulla sui tipi di dati.

Quello che sarebbe meglio è se ci fosse uno strumento in grado di connettersi sia a SQL Server che a MySQL, quindi fare una copia. Perdi visualizzazioni, stored procedure, trigger, ecc., Ma non è difficile copiare una tabella che utilizza solo tipi di base da un DB a un altro ... vero?

Qualcuno sa di un tale strumento? Non mi importa quante ipotesi fa o quali semplificazioni si verificano, purché supporti integer, float, datetime e string. Devo fare molta potatura, normalizzazione, ecc. Comunque, quindi non mi interessa mantenere le chiavi, le relazioni o qualcosa del genere, ma ho bisogno del set iniziale di dati in fretta!


1
Ho sentito alcune persone utilizzare MSSQL2MySQL con successo, ma non posso garantirlo da solo.
Greg Hurlman

1
Ho sentito che SQLYob può farlo. < webyog.com/en > qui: < searchsqlserver.techtarget.com/tip/… >
borjab

Questo strumento è esattamente quello che chiedevi: Full Convert Enterprise . È vero, perdi visualizzazioni, procedure e trigger, ma è altamente ottimizzato per tabelle enormi. Un'altra soluzione (più costosa) che traduce tutti gli oggetti (procedure ecc.) È SqlTran SQL Server in MySQL
Damir Bulic


1
@borjab: SQLyog lavorava con ODBC nelle versioni precedenti ma non lo fa più, quindi non è un'opzione per questo lavoro.
BlaM

Risposte:


59

Il modo migliore che ho trovato è il MySQL Migration Toolkit fornito da MySQL. L'ho usato con successo per alcuni grandi progetti di migrazione.


2
+1 - Ora è EOL e MySQL Workbench includerà un plug-in di migrazione (versione precedente 5.2) ma per ora usa il seguente link: dev.mysql.com/downloads/gui-tools/5.0.html
Mark Robinson

non vuole convertire le colonne DATE o DATETIME :(
Robert Ivanc

1
Nota: attualmente, MySQL Migration Toolkit non è disponibile per Linux (da dev.mysql.com/doc/migration-toolkit/en/… )
mkirk

1
Nota che My SQL Migration Toolkit richiede la versione a 32 bit di JDK 5 update 8 o successivo (deve essere ver 5, ver 6 non funzionerà), che puoi scaricare qui: tinyurl.com/5snd6y3
casterle

9

Utilizzando MSSQL Management Studio ho eseguito la transizione delle tabelle con MySQL OLE DB. Fare clic con il pulsante destro del mouse sul database e andare su "Attività-> Esporta dati" da lì è possibile specificare un'origine OLE DB MsSQL, l'origine OLE DB MySQL e creare le mappature delle colonne tra le due origini dati.

Molto probabilmente vorrai impostare il database e le tabelle in anticipo sulla destinazione MySQL (l'esportazione vorrà creare le tabelle automaticamente, ma questo spesso si traduce in un errore). È possibile creare rapidamente le tabelle in MySQL utilizzando "Attività-> Genera script" facendo clic con il pulsante destro del mouse sul database. Una volta generati gli script di creazione, dovrai eseguire la ricerca / sostituzione di parole chiave e tipi che esistono da MSSQL a MYSQL.

Ovviamente potresti anche eseguire il backup del database come al solito e trovare un'utilità che ripristinerà il backup MSSQL su MYSQL. Tuttavia, non sono sicuro che ne esista uno.


9

Le edizioni "Standard", "Developer" ed "Enterprise" di SQL Server 2005 hanno SSIS , che ha sostituito DTS da SQL Server 2000. SSIS dispone di una connessione incorporata al proprio DB e puoi trovare una connessione per cui qualcun altro ha scritto MySQL. Ecco un esempio. Una volta ottenute le connessioni, dovresti essere in grado di creare un pacchetto SSIS che sposta i dati tra i due.

Non devo spostare i dati da SQLServer a MySQL, ma immagino che una volta installata la connessione MySQL, funzioni allo stesso modo dello spostamento dei dati tra due DB SQLServer, il che è piuttosto semplice.


8

Il rolling della tua soluzione PHP funzionerà sicuramente anche se non sono sicuro che esista un buon modo per duplicare automaticamente lo schema da un DB all'altro (forse questa era la tua domanda).

Se stai solo copiando dati e / o hai comunque bisogno di codice personalizzato per convertire tra schemi modificati tra i due DB, ti consiglio di usare PHP 5.2+ e le librerie PDO. Sarai in grado di connetterti utilizzando PDO ODBC (e utilizzare i driver MSSQL). Ho avuto molti problemi nel portare grandi campi di testo e caratteri multibyte da MSSQL a PHP usando altre librerie.


6

Un altro strumento da provare sarebbe la suite SQLMaestro . È un po 'complicato inchiodare lo strumento preciso, ma hanno una varietà di strumenti, sia gratuiti che a pagamento, che gestiscono un'ampia varietà di attività per più piattaforme di database. Suggerirei di provare prima lo strumento Data Wizard per MySQL, poiché credo che avrà lo strumento di "importazione" appropriato di cui hai bisogno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.