Je voudrais importer un fichier MySQL .sql de 350 Mo sur une machine Windows 7. Je le fais habituellement en utilisant
mysql -uuser -p -e "source c:/path/to/file.sql" database
puisque <ne fonctionne pas dans Powershell.
Mon fichier .sql contient une erreur cette fois-ci. Je préférerais simplement sauter la mauvaise ligne et continuer l’importation. Comment puis-je forcer l’importation pour continuer sous Windows?
Sur un système basé sur unix / linux, je pourrais utiliser
mysql --force ... < file.sql
mais –force ne semble pas fonctionner avec la commande -e “source …” (ce qui est compréhensible).
Merci Mike
Vous devrez probablement exécuter Powershell dans la console standard pour pouvoir utiliser <
correctement. Techniquement, vous pouvez utiliser get-content
et diriger la sortie vers mysql
, mais j'ai toujours trouvé que c'était lent, et cela garde en quelque sorte le contenu du fichier en mémoire de la session Powershell.
Voici comment je l'exécuterais à partir de l'invite Powershell (chemin de fichier modifié pour inclure des espaces pour illustrer les guillemets internes, au cas où):
cmd /C 'mysql -uuser -p --force < "C:\path\with spaces\to\file.sql"'
[GC]::collect()
effacerait apparemment la mémoire, mais vous ne pouvez pas le faire avant d'avoir fini. En ce qui concerne mysql
et mysqldump
, je ne m'embête pas avec Powershell. L'encodage par défaut utilisé dans >
est Unicode, ce qui rend les fichiers de vidage deux fois plus grands que Powershell, à moins que vous ne vous souveniez d'écrire | out-file dump.sql -enc ascii
| out-file dump.sql -enc ascii
au lieu de > dump.sql
.
Je suggère également d’examiner cette réponse SO , qui tire parti de la commande SQL source
: