web-dev-qa-db-fra.com

Comment exporter une base de données SQL Server vers MySQL?

J'essaie de convertir un fichier de sauvegarde de base de données SQL Server (.bak) en MySQL. Cette 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é pour exporter vers MySQL.

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

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

81
matkins

Vous pouvez utiliser MySQL Workbench qui fournit un moyen de migrer rapidement les données et les applications de Microsoft SQL Server vers 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 les migrations à partir de Microsoft SQL Server, Sybase ASE et PostgreSQL.
  • Gestion du projet de migration - permet de configurer, copier, éditer, exécuter et planifier les migrations.

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

48
Javier Cadiz

J'utilise sqlyog pour migrer de mssql vers mysql. J'ai essayé Migration toolkit and workbench mais ai aimé sqlyog pour ses SJA . Je pourrais planifier le processus d'importation et effectuer une importation incrémentielle à l'aide de la clause WHERE.

enter image description here

22
Man_k

PhpMyAdmin a un assistant d'importation qui vous permet également d'importer un type de fichier MSSQL.

Voir http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html pour connaître les types de scripts de base de données pris en charge.

7
David d C e Freitas

si vous avez un dump SQL compatible MSSQL, vous pouvez le convertir en requêtes MySQL une à une en utilisant cet outil en ligne.

http://burrist.com/mstomy.php

J'espère que cela vous a permis de gagner du temps

6
HimalayanCoder

Comme mentionné ci-dessus, si vos données contiennent des caractères de tabulation, des virgules ou des nouvelles lignes dans vos données, il sera très difficile à exporter et à 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 champs longs contient du texte multiligne contenant des caractères de nouvelle ligne.

Dans ces cas, ma 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 pour lire le fichier de données. BCP est l'un des plus anciens serveurs SQL Server. utilitaires de ligne de commande (remontant à la naissance de SQL Server - v6.5), mais il existe toujours et constitue l’un des moyens les plus simples et les plus fiables d’exporter 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. Pour ce faire, cliquez avec le bouton droit de la souris sur la base de données dans le gestionnaire d'entreprise SQL, puis sur Tâches-> Générer des scripts ... et créez un script SQL pour toutes les tables. Vous devez ensuite convertir le script manuellement en SQL compatible avec MySQL (sans aucun doute la pire partie du travail) et enfin exécuter les commandes CREATE TABLE sur la base de données MySQL afin d’avoir les tables correspondantes aux versions du serveur SQL en colonnes, vides et prêtes à l'emploi. Les données.

Exportez ensuite 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 celle-ci: -S "NomOrdinateur\SQLExpress")

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

Maintenant, copiez les fichiers .dat dans/tmp sur le serveur MySQL et chargez-les du côté de MySQL comme suit:

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

N'oubliez pas que les tables (TableName dans cet exemple) doivent déjà être créées du côté de MySQL.

Cette procédure est péniblement manuelle en ce qui concerne la conversion du schéma SQL. Cependant, 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 inversement.

5
Professor Falken

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.

4
Kevin

J'ai utilisé la chaîne de connexion ci-dessous sous l'onglet Avancé de MySQL Migration Tool Kit pour me 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 "nom_système\nom_instance". Mais dans ce qui précède, ne pas ajouter "systemName \" (utilisez uniquement InstanceName).

Pour vérifier ce que devrait être le nom d'instance, accédez à services.msc et vérifiez le nom d'affichage de l'instance MSSQL. Il montre similaire à MSSQL $ instanceName.

J'espère que cette aide dans la connectivité MSSQL de la boîte à outils de migration mysql.

2

Il semble que vous ayez raison: le Migration Toolkit doit être intégré à MySQL Workbench - mais je ne pense pas que cela soit terminé. Consultez l'annonce de fin de vie des outils d'interface graphique MySQL (qui incluait le kit de migration):

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

MySQL conserve les archives des packages MySQL GUI Tools:

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

2
Martin

MySQL Migration Toolkit (1.1.10) reste disponible au téléchargement ici:

http://downloads.mysql.com/archives.php?p=MySQLDeveloperSuite&v=1.1.1

1
Matias P.

les téléchargements ne sont plus disponibles sur le site officiel ( http://dev.mysql.com/downloads/gui-tools/5.0.html ). Au lieu de cela, jetez un oeil ici: http: //download.softagency.net/MySQL/Downloads/MySQLGUITools/

0
Marco C.

J'avais des données que je devais obtenir de mssql dans mysql, j'avais du mal à trouver une solution. Donc ce que j’ai fait à la fin (une façon un peu longue de le faire, mais en dernier recours, cela fonctionne) a été:

  • Ouvrez la base de données mssql dans SQL Server Management Studio Express (j'ai utilisé 2005).
  • Ouvrez chaque table à tour de rôle et
  • Cliquez dans le coin supérieur gauche pour sélectionner la table entière:

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

  • Ouvrez ms Excel
  • Coller les données du presse-papiers
  • Enregistrer le fichier Excel au format .csv
  • Répétez ce qui précède pour chaque table
  • Vous devriez maintenant pouvoir importer les données dans mysql

J'espère que cela t'aides

0
Dave