Quand on a en main un script SQL permettant de recréer une base de données et son contenu, plusieurs options s'offrent à nous pour obtenir la base de données correspondante.
Attention : si le script SQL vous est fourni sur le Web, vous devez le télécharger avant de faire le copier-coller de ses lignes sinon, il s'affichera dans le navigateur mais les accents ne seront pas correctement encodés.
Tout d'abord, il faut vérifier si le script se charge de créer la base de données à partir de zéro ou s'il ne fait que créer les tables et leurs données à l'intérieur d'une base de données existante.
Un script qui s'occupe de tout faire à partir de zéro contiendra, parmi ses premières lignes, les instructions suivantes :
CREATE DATABASE nombasededonnees;
USE nombasededonnees;
ou, pour spécifier l'encodage des caractères :
CREATE DATABASE nombasededonnees DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE nombasededonnees;
Parmi les options suivantes, certaines nécessitent la présence de ces lignes alors que pour d'autres, les lignes ne doivent pas faire partie du script. À vous d'ajouter ou d'enlever les lignes selon le besoin.
Si la taille de la base de données n'est pas trop imposante, il est possible de coller les lignes du script dans phpMyAdmin ou à la ligne de commande MySQL afin de les exécuter :
Le programme mysql.exe permet de lancer la fenêtre de commande MySQL. Il permet également d'exécuter un script SQL s'il le reçoit en entrée, à la suite du caractère de redirection d'entrée : « < ». Ainsi, le fichier qui suivra le caractère < sera fourni en entrée au programme mysql.exe, qui se chargera d'en exécuter les lignes plutôt que d'ouvrir une fenêtre de commande MySQL.
Assurez-vous que l'encodage du fichier .sql doit le même que celui précisé dans le paramètre --default-character-set.
Attention : cette opération se fait directement dans le Terminal et non à la ligne de commande MySQL.
Ex :
La base de données peut être créée dans le script ou avoir été créée manuellement. De même, la sélection de la base de données peut être effectuée dans le script ou en dehors du script. La commande variera légèrement avec l'une ou l'autre de ces approches.
Dans le cas où le script contient la commande USE pour sélectionner la base de données, la redirection d'entrée se fera directement comme suit :
mysql -u nomusagermysql -p < chemin\nomscript.sql --default-character-set=UTF8
Si la base de données n'est pas sélectionnée dans le script, on indiquera son nom avant le caractère de redirection d'entrée :
mysql -u nomusagermysql -p nombasededonnees < chemin\nomscript.sql --default-character-set=UTF8
Lorsque vous travaillez à la ligne de commande MySQL, plusieurs commandes, qui ne sont pas des instructions SQL, peuvent vous être utiles. Parmi elles, la commande source permet d'exécuter une série de commandes SQL contenues dans un fichier.
Attention : la commande source doit être exécutée dans une fenêtre MySQL et non dans le Terminal.
Assurez-vous que le programme mysql.exe ait été lancé avec le paramètre --default-character-set correspondant à l'encodage du fichier .sql.
Si le script ne contient pas les commandes CREATE DATABASE et/ou USE, ces étapes peuvent être réalisées manuellement avant de lancer la commande source.
Ex :
SOURCE chemin\nomscript.sql
La commande source peut être remplacée par son raccourci :« . »
Ex :
. chemin\nomscript.sql
Autre alternative : si vous souhaitez utiliser la commande source directement à partir d'une fenêtre de commande DOS, l'option -e vous permettra d'y arriver.
mysql -u nomusagermysql -p -e "source chemin\nomscript.sql" --default-character-set=UTF8
« Executing SQL Statements from a Text File ». MySQL. https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html
« Interface en ligne de commande - Les redirections d'entrées/sorties ». Wikipédia. http://fr.wikipedia.org/wiki/Interface_en_ligne_de_commande#Les_redirections_d.27entr.C3.A9es.2Fsorties
« mysql Commands ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html
« Using mysql in Batch Mode ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/batch-mode.html
▼Publicité