2008-10-23 9 views
1

Je dois migrer une table de MSSQL Server vers MySQL. Le problème est que la table est assez grande (65 millions d'enregistrements) et tout le processus prend trop de temps. Est-ce que quelqu'un a une idée de comment accélérer les choses? Des outils utiles qui pourraient améliorer cela?Migrer la table de MS SQL Server vers MySQL

+0

Réponse similaire: http://stackoverflow.com/questions/11619177/sql-server-2008-r2-to-mysql-migration/11625261#11625261 – Jacob

Répondre

0

vous pouvez exporter les données vers le texte, puis utilisez l'instruction de charge mysql:

données charge infile '/somefolder/text_file_with_data.txt' locale dans la table des champs some_table terminé par '\t' lignes terminées par '\n'

ou si vous placez le fichier de données sur le serveur MySQL, vous pouvez:

données INFILE '/somefolder_on_the_mysql_server/text_file_with_data.txt' dans la table des champs some_table terminés par '\t' lignes terminées par '\n'

Je ne suis pas sûr de savoir quelle est la syntaxe de mssql à exporter

Vous pouvez toujours exporter par jeux de 10 000 ou 100 000.

1

Besoin de le faire une seule fois? Ne perdez pas trop de temps à optimiser, attendez jusqu'à la fin et continuez.

Besoin de le faire plus souvent? Ensuite, élaborer les outils/techniques que vous utilisez actuellement serait utile.

0

Assurez-vous que les tables mysql n'ont initialement aucun index; ajoutez-les une fois les charges terminées.

0

Assurez-vous que le fichier de stockage de table MySQL est assez grand avant de commencer l'insertion en utilisant une telle déclaration dans votre fichier my.ini:

innodb_data_file_path=ibdata1:1000M:autoextend 
0

Essayez si vous pouvez obtenir les données de MSSQL et dans mysql par en utilisant les packages SSIS/DTS que vous pouvez générer avec l'assistant d'importation/exportation de SQL Server. (Connectez-vous à MySQL avec le fournisseur OLEDB/ADO approprié

Commencez quand vous rentrer à la maison le vendredi, et revenez après le week-end;.)

0

Assurez-vous qu'aucun des colonnes ont un index sur eux, et supprimer tout clés étrangères (si vous utilisez InnoDB pour le type de table) pour l'importation.

1

Voici comment j'ai fait pour migrer une table d'enregistrements 800K de MS SQL Server vers MySQL.

Créer une requête pour afficher les données dans un format tabulaire :

SELECT [PostalCode] + ' ' + 
    [StateCode] + ' ' + 
    [Latitude] + ' ' + 
    [Longitude] + ' ' + 
    [CityName] 
FROM [dbo].[PostalCode] 

exécuter la requête avec SQL Server Management Studio et sélectionnez d'afficher les résultats dans un fichier (Menu: Requête -> Résultats To -> Results to File)

Le nom de fichier doit être le nom de la table dans MySQL. L'extension de fichier n'a pas d'importance.

Ensuite, utilisez mysqlimport.exe (sous Windows) pour importer les données (la table doit exister dans la base de données MySQL):

mysqlimport.exe --user=user_name 
    --columns=postalcode,statecode,latitude,longitude,cityname 
    --ignore-lines=2 databaseName pathToFile 

Après l'importation, je devais supprimer les 2 derniers enregistrements de la table parce que la fin du fichier contenu quelques déchets: (818193 ligne (s) affectée)

Pour 800K, c'est assez rapide: 10 secondes pour l'exportation, puis 10 secondes pour l'importation.

Espérons que cela aide.

Questions connexes