Comment exporter des données de SQL Server 2005 vers MySQL [fermé]

86

Je me suis cogné la tête contre l' SQL Server 2005idée de faire sortir beaucoup de données. On m'a donné une base de données avec près de 300 tables et je dois la transformer en base de données MySQL. Mon premier appel a été d'utiliser bcp mais malheureusement, il ne produit pas de CSV valide - les chaînes ne sont pas encapsulées, vous ne pouvez donc pas gérer les lignes contenant une chaîne avec une virgule (ou tout ce que vous utilisez comme délimiteur) et je devrais toujours écrire à la main toutes les instructions de création de table, car évidemment CSV ne vous dit rien sur les types de données.

Ce serait mieux s'il y avait un outil capable de se connecter à la fois à SQL Server et à MySQL, puis faites une copie. Vous perdez des vues, des procédures stockées, des déclencheurs, etc., mais il n'est pas difficile de copier une table qui n'utilise que des types de base d'une base de données à une autre ... n'est-ce pas?

Quelqu'un connaît-il un tel outil? Je ne me soucie pas du nombre d'hypothèses qu'il fait ou des simplifications qui se produisent, tant qu'il prend en charge les nombres entiers, flottants, datetime et string. De toute façon, je dois faire beaucoup d'élagage, de normalisation, etc.

Tapis
la source
1
J'ai entendu quelques personnes utiliser MSSQL2MySQL avec succès, mais je ne peux pas en garantir moi-même.
Greg Hurlman
1
J'ai entendu dire que SQLYob peut le faire. < webyog.com/en > ici: < searchsqlserver.techtarget.com/tip/… >
borjab
Cet outil est exactement ce que vous avez demandé: Full Convert Enterprise . Certes, vous perdez des vues, des procédures et des déclencheurs, mais il est hautement optimisé pour les tables volumineuses. Une autre solution (plus chère) qui traduit tous les objets (procédures, etc.) est SqlTran SQL Server vers MySQL
Damir Bulic
1
Réponse similaire ici: stackoverflow.com/questions/11619177/…
Jacob
1
@borjab: SQLyog fonctionnait avec ODBC dans les anciennes versions, mais ce n'est plus le cas, ce n'est donc pas une option pour ce travail.
BlaM

Réponses:

59

Le meilleur moyen que j'ai trouvé est le MySQL Migration Toolkit fourni par MySQL. Je l'ai utilisé avec succès pour certains grands projets de migration.

Nick Berardi
la source
2
+1 - C'est maintenant EOL, et MySQL Workbench va inclure un plugin de migration (version antérieure 5.2) mais pour l'instant utilisez le lien suivant: dev.mysql.com/downloads/gui-tools/5.0.html
Mark Robinson
ne veut pas convertir les colonnes DATE ou DATETIME :(
Robert Ivanc
1
Remarque: Actuellement, la boîte à outils de migration MySQL n'est pas disponible pour Linux (à partir de dev.mysql.com/doc/migration-toolkit/en/… )
mkirk
1
Notez que My SQL Migration Toolkit nécessite la version 32 bits de JDK 5 mise à jour 8 ou ultérieure (doit être la version 5, la version 6 ne fonctionnera pas), que vous pouvez télécharger ici: tinyurl.com/5snd6y3
casterle
9

En utilisant MSSQL Management Studio, j'ai fait la transition de tables avec MySQL OLE DB. Faites un clic droit sur votre base de données et allez dans "Tâches-> Exporter les données" à partir de là, vous pouvez spécifier une source MsSQL OLE DB, la source MySQL OLE DB et créer les mappages de colonnes entre les deux sources de données.

Vous voudrez probablement configurer la base de données et les tables à l'avance sur la destination MySQL (l'exportation voudra créer les tables automatiquement, mais cela entraîne souvent un échec). Vous pouvez créer rapidement les tables dans MySQL en utilisant le menu "Tâches-> Générer des scripts" en faisant un clic droit sur la base de données. Une fois vos scripts de création générés, vous devrez parcourir et rechercher / remplacer les mots-clés et les types qui existent dans MSSQL vers MYSQL.

Bien sûr, vous pouvez également sauvegarder la base de données comme d'habitude et trouver un utilitaire qui restaurera la sauvegarde MSSQL sur MYSQL. Je ne sais pas s'il en existe un.


la source
9

Les éditions "Standard", "Developer" et "Enterprise" de SQL Server 2005 ont SSIS , qui a remplacé DTS de SQL Server 2000. SSIS a une connexion intégrée à sa propre base de données, et vous pouvez trouver une connexion pour laquelle quelqu'un d'autre a écrit MySQL. Voici un exemple. Une fois que vous avez vos connexions, vous devriez être en mesure de créer un package SSIS qui déplace les données entre les deux.

Je n'ai pas à déplacer les données de SQLServer vers MySQL, mais j'imagine qu'une fois la connexion MySQL installée, cela fonctionne de la même manière que le déplacement de données entre deux bases de données SQLServer, ce qui est assez simple.

Sean
la source
8

Faire rouler votre propre solution PHP fonctionnera certainement, même si je ne suis pas sûr qu'il existe un bon moyen de dupliquer automatiquement le schéma d'une base de données à l'autre (c'était peut-être votre question).

Si vous copiez simplement des données et / ou que vous avez de toute façon besoin de code personnalisé pour convertir entre les schémas modifiés entre les deux bases de données, je recommanderais d'utiliser PHP 5.2+ et les bibliothèques PDO. Vous pourrez vous connecter en utilisant PDO ODBC (et utiliser les pilotes MSSQL). J'ai eu beaucoup de problèmes pour obtenir de grands champs de texte et des caractères multi-octets de MSSQL vers PHP en utilisant d'autres bibliothèques.

pix0r
la source
6

Un autre outil à essayer serait la suite SQLMaestro . Il est un peu difficile de déterminer l'outil précis, mais ils disposent d'une variété d'outils, gratuits et à l'achat, qui gèrent une grande variété de tâches pour plusieurs plates-formes de bases de données. Je suggérerais d'essayer d'abord l'outil Data Wizard pour MySQL, car je crois que cela aura le bon outil "d'importation" dont vous avez besoin.

Dillie-O
la source