2010-10-12 20 views
67

Je suis en train de convertir un fichier de sauvegarde de base de données SQL Server (.bak) en MySQL. This question et les réponses ont été très utiles, et j'ai réussi à importer la base de données, mais je suis maintenant bloqué sur l'exportation vers MySQL.Comment exporter une base de données SQL Server vers MySQL?

La MySQL Migration Toolkit a été suggéré, mais semble avoir été remplacé par le MySQL Workbench. Est-il possible d'utiliser MySQL Workbench pour migrer à partir de SQL Server de la même manière que l'outil de migration?

Ou est-ce que la boîte à outils de migration est toujours disponible quelque part?

+3

J'ai un MS SQL base de données et je veux importer les données dans MYSQL pour remplacer le système d'origine. J'ai maintenant trouvé une ancienne version de la boîte à outils de migration, mais je n'ai pas encore réussi à me connecter au MS SQL Server. – matkins

+0

Peut-être que cela pourrait aider. http://stackoverflow.com/questions/2986404/convert-tsql-to-mysql/23088879#23088879 – Madagaga

+0

Je suis d'accord. Je ne trouve toujours rien qui m'aide vraiment à convertir de mssql en mysql, malgré le fait que ce sujet soit marqué comme doublon. Mssql à Mysql est un sujet qui varie d'un cas à l'autre. C'est très insultant pour ceux qui ont marqué cela comme doublon. Comme c'est ignorant! – Curly

Répondre

2

Il semble que vous ayez raison: Migration Toolkit doit être intégré à MySQL Workbench - mais je ne pense pas que ce soit déjà terminé. Voir l'annonce de fin de vie pour MySQL GUI Tools (qui comprenait la Migration Toolkit):

http://www.mysql.com/support/eol-notice.html

MySQL maintenir les archives de l'interface graphique MySQL Outils packages:

http://dev.mysql.com/downloads/gui-tools/5.0.html

+0

Certainement c'est l'état actuel. Les bonnes nouvelles sont qu'avec http://dev.mysql.com/doc/migration-toolkit/en/scripted-migration.html vous pouvez faire vous-même. Voir les scripts GRT Shell et Lua! – albfan

+1

Le lien n'est plus là. – powder366

5

PhpMyAdmin a un assistant d'importation qui vous permet également d'importer un type de fichier MSSQL. Voir pour connaître les types de scripts DB pris en charge.

2

J'ai utilisé la chaîne de connexion ci-dessous sur l'onglet Avancé du kit de migration de MySQL outil pour se connecter à l'instance SQL Server 2008:

jdbc:jtds:sqlserver://"sql_server_ip_address":1433/<db_name>;Instance=<sqlserver_instanceName>;user=sa;password=PASSWORD;namedPipe=true;charset=utf-8;domain= 

Habituellement, le paramètre a "SystemName \ instanceName". Mais dans ce qui précède, n'ajoute pas "systemName" (utilisez uniquement InstanceName).

Pour vérifier ce que le nom d'instance doit être, accédez à services.msc et vérifiez le DisplayName de l'instance MSSQL. Cela ressemble à MSSQL $ instanceName.

Espérons que cette aide dans la connectivité MSSQL de mysql migration toolkit.

4

Vous pouvez le faire facilement en utilisant l'outil Data Loader. Je l'ai déjà fait avant d'utiliser cet outil et je l'ai trouvé bon. J'utilise sqlyog pour migrer de mssql vers mysql.

+0

Semble que c'est Windows seulement. – powder366

18

J'ai essayé Migration toolkit and workbench mais aimé sqlyog pour son SJA. Je pourrais planifier le processus d'importation et faire l'importation incrémentielle en utilisant la clause WHERE.

enter image description here

36

Vous pouvez utiliser MySQL Workbench qui fournit un moyen de migrer rapidement les données et les applications de Microsoft SQL Server à MySQL en utilisant moins de temps et d'efforts.

Cet outil a beaucoup de fonctionnalités intéressantes comme:

  • migrations de bases de données - permet la migration de Microsoft SQL Server, Sybase ASE et PostgreSQL.
  • Gestion de projet de migration - permet de configurer, copier, éditer, exécuter et programmer des migrations.

En savoir plus http://www.mysql.com/products/workbench/migrate/

+0

J'ai utilisé cela pour migrer à partir de SQL Server sur mon Mac. Pilotes également téléchargés http://www.actualtech.com/download.php et l'administrateur ODBS d'origine de Mac. – powder366

+1

@ powder366, pouvez-vous être plus précis sur la façon de connecter votre Mac à SQL Server? Merci! – bizi

+0

Ça marche !!! Après avoir échoué à importer depuis PhpMyAdmin (_o'rly? _), Et avoir essayé l'outil de conversion de schéma d'AWS, qui a refusé de s'installer sur mes PC Win7 et Win10 sans donner de message d'erreur, j'ai finalement obtenu un outil de travail! Étant donné que je ne pouvais pas créer une "connexion" à une base de données SQL Server dans Workbench, je pensais qu'il me manquait un pilote ODBC fonctionnant. Mais je me trompais. On dirait que le seul endroit dans Workbench où vous pouvez vous connecter à SQL Server est la boîte de dialogue de migration. J'ai donc utilisé HeidiSQL pour tester ma connexion en dehors de Workbench. Thx @Nolwennig pour la vidéo (dans les commentaires de la question) – Balmipour

-1

j'ai eu quelques données que je devais obtenir de MSSQL dans MySQL, avait du mal à trouver une solution. Donc ce que je l'ai fait à la fin (un peu d'une manière verbeux de le faire, mais en dernier ressort, il fonctionne) était:

  • Ouvrez la base de données MSSQL en studio de gestion de serveur SQL Express (je 2005)
  • Ouvrir chaque table à son tour et
  • Cliquez sur la case de coin en haut à gauche pour sélectionner tablée:

  • Copier les données dans le presse papier (ctrl + v)

  • Ouvrir MS excel
  • Coller les données du presse-papier
  • Enregistrer le fichier excel comme .csv
  • Répétez ci-dessus pour chaque table
  • Vous devriez maintenant être en mesure d'importer les données dans mysql

Hope this helps

+1

En regardant les autres réponses, il semble que vous pouvez utiliser MySQL Workbench pour migrer. Pourquoi voudriez-vous le faire à la main? (Pour quelques tables, votre méthode peut fonctionner, mais si vous avez plusieurs tables, c'est juste un travail sans fin.) – Styxxy

+0

vraiment, c'est ce que vous avez fait? – Dementic

+0

Ce n'est pas une migration, lol. Ceci est une pâte de copie de données.La migration fait bien plus que cela, et si vous avez 50 tables, le ferez-vous pour tous? – daminufe

5

Comme mentionné ci-dessus, si vos données contiennent des caractères de tabulation, des virgules ou des retours à la ligne dans vos données, il sera très difficile de les exporter et de les importer avec CSV. Les valeurs déborderont des champs et vous obtiendrez des erreurs. Ce problème est encore pire si l'un de vos longs champs contient du texte multiligne avec des caractères de nouvelle ligne. Dans ce cas, la méthode consiste à utiliser l'utilitaire de ligne de commande BCP pour exporter les données du serveur SQL, puis utiliser la commande LOAD DATA INFILE .. INTO TABLE dans MySQL pour lire le fichier de données. BCP est l'un des Les utilitaires de ligne de commande SQL Server les plus anciens (datant de la naissance de SQL Server - v6.5), mais il est toujours là et toujours l'un des moyens les plus faciles et les plus fiables pour extraire des données.

Pour utiliser cette technique, vous devez créer chaque table de destination avec le même schéma ou un schéma équivalent dans MySQL. Je fais cela en faisant un clic droit sur la base de données dans le gestionnaire d'entreprise SQL, puis sur Tâches-> Générer des scripts ... et créer un script SQL pour toutes les tables. Vous devez ensuite convertir le script en MySQL compatible SQL à la main (certainement la pire partie du travail) et enfin exécuter les commandes CREATE TABLE sur la base de données MySQL de sorte que vous ayez des tables correspondantes aux versions SQL Server colonne par colonne, vide et prêt pour Les données.

Ensuite, exportez les données du côté MS-SQL comme suit.

bcp DatabaseName..TableName out TableName.dat -q -c -T -S ServerName -r \0 -t !\t! 

(Si vous utilisez SQL Server Express, utilisez une valeur -S comme ceci: -S "ComputerName \ SQLExpress")

Cela va créer un fichier nommé TableName.dat, avec des champs délimités par! [tab]! et les lignes délimitées par des caractères \ 0 NUL.

Maintenant, copiez les fichiers .dat dans/tmp sur le serveur MySQL et la charge sur le côté MySQL comme ceci:

LOAD DATA INFILE '/tmp/TableName.dat' INTO TABLE TableName FIELDS TERMINATED BY '!\t!' LINES TERMINATED BY '\0'; 

Ne pas oublier que les tables (TableName dans cet exemple) doivent être créés déjà du côté MySQL. Cette procédure est douloureusement manuelle quand il s'agit de convertir le schéma SQL, mais elle fonctionne même pour les données les plus difficiles et parce qu'elle utilise des fichiers plats, vous n'avez jamais besoin de persuader SQL Server de parler à MySQL, ou vice versa. .