Domanda

Ci ho sbattuto la testa contro SQL Server 2005 cercando di estrarre molti dati.Mi è stato fornito un database con quasi 300 tabelle e devo trasformarlo in un database MySQL.La mia prima chiamata è stata quella di utilizzare bcp ma sfortunatamente non produce CSV valido: le stringhe non sono incapsulate, quindi non puoi gestire qualsiasi riga che contenga una stringa con una virgola (o qualunque cosa 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.

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

Qualcuno conosce uno strumento del genere?Non mi interessa quante ipotesi fa o quali semplificazioni si verificano, purché supporti numeri interi, float, datetime e string.Devo fare molta potatura, normalizzazione, ecc.comunque quindi non mi interessa conservare chiavi, relazioni o cose del genere, ma ho bisogno velocemente del set iniziale di dati!

Nessuna soluzione corretta

Altri suggerimenti

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

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

Non ho dovuto 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.

Utilizzando MSSQL Management Studio ho eseguito la transizione delle tabelle con MySQL OLE DB.Fare clic con il tasto destro 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 in anticipo il database e le tabelle sulla destinazione MySQL (l'esportazione vorrà creare le tabelle automaticamente, ma questo spesso si traduce in un errore).Puoi 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 delle parole chiave e dei tipi esistenti in MSSQL in MYSQL.

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

Il rollover 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 semplicemente copiando dati e/o hai comunque bisogno di codice personalizzato per convertire tra schemi modificati tra i due DB, consiglierei di utilizzare PHP 5.2+ e le librerie PDO.Potrai connetterti utilizzando PDO ODBC (e utilizzare i driver MSSQL).Ho avuto molti problemi nel trasferire campi di testo di grandi dimensioni e caratteri multibyte da MSSQL a PHP utilizzando altre librerie.

Un altro strumento da provare sarebbe la suite SQLMaestro - http://www.sqlmaestro.com È un po' complicato individuare 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" corretto di cui hai bisogno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top