Salut ginius.
Le script batch windows, c'est juste de l'habillage.
Autrement dit, ce que tu tapes dans ta console MySql, tu peux le faire aussi bien en le mettant dans un script.
Ce qui évite constamment de le retaper à chaque fois que vous en avez besoin.
C'est pour indiquer que vous ne désirez pas obtenir la trace à l'exécution du script de tout ce que va s'exécuter.
setlocal enableDelayedExpansion
C'est un paramètre pour indiquer que je ne dois pas prendre la variable, mais son contenu.
set PATH=.;c:\Wamp\bin\mysql\mysql5.7.17\bin\;%PATH%
La commande "mysql" doit s'exécuter dans le répertoire où elle se trouve.
La variable d'environnement "PATH" permet de définir localement au script batch, le chemin vers ce répertoire.
Sans cela, vous ne pourriez pas exécuter la commande "mysql", à moins que le chemin existe déjà dans la variable d'environnement "PATH".
Au lieu de travailler par défaut avec le charset CP850, j'utilise ici le charset Windows-1252.
Il s'agit d'un problème d'interprétation des accents dans le script sql.
1 2
| SET FIC=%~nx0
SET FIC=%FIC:bat=sql% |
C'est une astuce, qui consiste à lire le nom du fichier qui va s'exécuter. Le nom ici est "base.bat".
L'astuce consiste à conserver le même préfixe, donc "base" et à remplacer le "bat" par un "sql".
Et donc dans la variable "FIC", le nouveau nom est "base.sql", alors qu'en entré vous aviez "base.bat".
Permet d'afficher une ligne blanche.
mysql < %FIC% --verbose --force
"mysql" est la commande qui permet d'interpréter du code sql de type MySql, bien sûr.
Le "<" est une redirection pour dire que MySql doit interpréter le flux entrant en provenance du fichier qui est contenu dans la variable "FIC", soit "base.sql".
"--verbose --force", ce sont des paramètres à MySql.
Le premier c'est pour garder une trace de tout ce qui va être exécuter.
Le second, c'est pour indiquer que même s'il y a une erreur, le traitement continue de s'exécuter.
Comme le nom l'indique, c'est pour marquer une pause dans l'exécution du traitement.
On sort proprement du script.
Je n'ai pas précisé dans mon dernier message, que vous devez adapter ce script batch à votre convenance .
Par exemple, modifier le chemin dans la variable d'environnement "PATH".
Pour le script sql, c'est un peu différent.
Vous devez préciser le nom de la base de données sur laquelle vous allez travailler.
Ici, c'est le cœur du SGBDR MySql qui se nomme mysql.
C'est un exemple basique. La table user est la table qui est présente dans la base mysql.
On sort proprement du script sql.
1 2 3 4
| [client]
user = root
password = root
host = 127.0.0.1 |
Ceci permet d'éviter de préciser dans votre script batch windows, le compte et le mot de passe qui est défini dans le SGBDR MySql.
Sinon, vous devez écrire :
mysql < %FIC% --user root --password root --host 127.0.0.1 --verbose --force
Sinon, pour répondre à votre sujet, vous n'avez pas précisé si c'est un export ou un import de votre base de données que vous faites ?
Pour un export, vous faites :
mysqldump --no-create-db --opt --databases test --result-file=Test.sql
Dans cet exemple, on décharge la totalité de la base de données de nom "test".
Et pour un import :
mysql --database=Test < Test\Tab_clients.sql
Inversement, ici, on charge juste une table, de nom client.
Ces deux commandes doivent se mettre dans le script batch windows.
@+
Partager