Comment exporter la base de données SQL Server vers MySQL? [dupliquer]
cette question a déjà une réponse ici:
- convertir T-SQL en MySQL 5 réponses
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 importé la base de données, mais je suis maintenant coincé sur l'exportation à MySQL.
Le 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 a fonctionné?
ou la boîte à outils sur la Migration est-elle toujours disponible quelque part?
11 réponses
vous pouvez utiliser MySQL Workbench qui fournit un moyen de migrer rapidement les données et les applications de Microsoft SQL Server vers MySQL employant moins de temps et d'effort.
cet outil a beaucoup de traits frais comme:
- migration de base de données - permet les migrations à partir de Microsoft SQL Server, Sybase ASE et PostgreSQL.
- gestion de projets de Migration - permet aux migrations d'être configurées, copiées, éditées, exécutées et programmées.
j'utilise contrairement à migrer à partir de mssql mysql. J'ai essayé Migration toolkit and workbench mais j'ai aimé sqlyog pour son SJA . Je pourrais programmer le processus d'importation et faire l'importation incrémentale en utilisant la clause où.
PhpMyAdmin a un assistant D'importation qui vous permet d'importer aussi un type de fichier MSSQL.
voir http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html pour les types de scripts DB qu'il supporte.
comme mentionné ci-dessus, si vos données contiennent des caractères d'onglets, des virgules, ou des lignes dans vos données, alors il va être très difficile de l'exporter et de l'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 multilignes avec des caractères newline.
ma méthode dans ces cas est d'utiliser L'utilitaire en ligne de commande BCP pour exporter les données à partir du serveur SQL, puis d'utiliser les données de charge INFILE .. Dans la commande TABLE dans MySQL pour lire le fichier de données. BCP est l'un des plus anciens utilitaires SQL Server en ligne de commande (datant de la naissance de SQL server - v6.5) mais il est toujours présent et reste l'un des moyens les plus faciles et les plus fiables pour obtenir des données.
pour utiliser cette technique, vous devez créer chaque table de destination avec le même schéma ou équivalent dans MySQL. Je fais cela en cliquant droit sur la base de données dans SQL enterprise manager, puis tâches - > générer Script... et créer un script SQL pour toutes les tables. Vous devez ensuite convertir le script en SQL compatible MySQL à la main (certainement la pire partie de la tâche) et enfin exécuter les commandes CREATE TABLE sur la base de données MySQL de sorte que vous avez des tables de correspondance avec les versions du serveur SQL colonne-Sage, 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 "151900920" -t !\t!
(si vous utilisez SQL Server Express, utilisez la valeur a-S comme ceci: - s" ComputerName\SQLExpress")
qui va créer un fichier appelé TableName.dat, avec des champs délimités par ![tab]! et les lignes délimitées par des caractères \0 NUL.
Copiez le .dat fichiers dans /tmp sur le serveur MySQL et la charge sur le MySQL côté comme suit:
LOAD DATA INFILE '/tmp/TableName.dat' INTO TABLE TableName FIELDS TERMINATED BY '!\t!' LINES TERMINATED BY '"151910920"';
n'oubliez pas que les tables (nom de table dans cet exemple) doivent être créées déjà du côté MySQL.
cette procédure est douloureusement manuel quand il s'agit de convertir le schéma SQL Plus, cependant il fonctionne pour même la plus difficile des données et parce qu'il utilise des fichiers plats que vous n'avez jamais besoin de persuader le serveur SQL pour parler à MySQL, ou vice versa.
vous pouvez le faire facilement en utilisant Data Loader outil. Je l'ai déjà fait avant d'utiliser cet outil et je l'ai trouvé bon.
si vous avez un dump SQL compatible MSSQL vous pouvez le convertir en requêtes MySQL un par un en utilisant cet outil en ligne""
l'Espoir de l'enregistrer votre temps
il semble que vous ayez raison: la boîte à outils de Migration doit être intégrée à MySQL Workbench - mais je ne pense pas que ce soit terminé. Voir l'annonce de fin de vie pour les outils GUI MySQL (qui incluait la boîte à outils de Migration):
http://www.mysql.com/support/eol-notice.html
MySQL maintain archives of the MySQL GUI Tools packages:
j'ai utilisé la chaîne de connexion ci-dessous sur L'onglet Avancé de MySQL Migration Tool Kit pour se connecter au serveur SQL 2008 instance:
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"nomsystème\instanceName". Mais dans ce qui précède, n'ajoute pas " nomsystème\ " (utilisez seulement InstanceName).
pour vérifier ce que devrait être le nom d'instanceName, allez à services.msc et vérifier le DisplayName de l'instance MSSQL. Il montre similaire à MSSQL$instanceName.
Espérons que cette aide dans MSSQL connectivité de mysql migration toolKit.
MySQL Migration Toolkit (1.1.10) toujours disponible en téléchargement ici:
http://downloads.mysql.com/archives.php?p=MySQLDeveloperSuite&v=1.1.10
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 /
j'ai eu quelques données que j'ai dû obtenir de mssql dans mysql, j'ai eu de la difficulté à trouver une solution. Donc, ce que j'ai fait à la fin (un peu longue haleine façon de le faire, mais en dernier recours il fonctionne):
- Ouvrir La base de données mssql dans sql server management studio express (j'ai utilisé 2005)
- ouvrir chaque table à tour de rôle et
-
cliquez sur le coin supérieur gauche pour sélectionner toute la table:
-
copier les données dans le presse-papiers (ctrl + v)
- Ouvrir ms excel
- Coller des données à partir du presse-papiers
- Enregistrer le fichier excel .csv
- répétez ce qui précède pour chaque table
- Vous devriez maintenant être en mesure d'importer les données dans mysql
Espérons que cette aide