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. .
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
Peut-être que cela pourrait aider. http://stackoverflow.com/questions/2986404/convert-tsql-to-mysql/23088879#23088879 – Madagaga
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