Import-Export
Exporter et importer des données MySQL
Exporter des données
Les options OUTFILE et DUMPFILE permettent d'exporter les données lues dans un fichier texte sur le serveur.
- OUTFILE permet de créer un fichier texte avec les éventuels caractères d'échappement nécessaires.
- DUMPFILE permet d'exporter des données au format binaire. Elle est utilisée pour exporter les champs au format binaire (type BLOB par exemple). Attention, un seul enregistrement peut-être exporté à la fois avec l'instruction DUMPFILE.
mysql> SELECT * INTO OUTFILE 'C:/monfichier.txt' FROM articles;
mysql> SELECT * INTO OUTFILE "c:/stats.csv"
-> FIELDS
-> TERMINATED BY ";"
-> ENCLOSED BY '"'
-> ESCAPED BY "\\"
-> LINES TERMINATED BY "\n"
-> FROM clients;
FIELDS permet de définir les règles sur les colonnes (les champs) :
- TERMINATED BY ";" définit que le caractère ; est le séparateur entre les champs
- ENCLOSED BY '"' définit que le caractère " (guillemet) entoure les champs
- ESCAPED BY "\\" définit que le caractère \ permet d'échapper les caractères interdits.
- STARTING BY '' définit qu'il n'y a pas de caractère spécial pour démarrer la chaine
- TERMINATED BY "\n" définit que le retour à la ligne correspond au changement de ligne
Exporter depuis l'invite de commande DOS
Exporter le contenu d'une table en redirigeant le résultat d'une requête DOS vers un fichier en local. Sous la commande DOS, faire un cd "C:\Program Files\MySQL\MySQL Server x.0\bin" ou si vous utilisez EasyPHP un cd "C:\Program Files\EasyPHP1-x\mysql\bin" puis un
C:\Program Files\MySQL\MySQL Server x.0\bin>
mysql -e "select * from mabase.clients" > "c:\matable.txt" -u root -h localhost -p
C:\Program Files\MySQL\MySQL Server x.0\bin>
mysql -e "select * from mabase.clients" >> "c:\matable.txt" -u root -h localhost -p
C:\Program Files\MySQL\MySQL Server x.0\bin>
mysql -b mabase -e "select * from articles" >> "c:\mon.txt" -u root -h localhost -p
Importer des données
Pour importer les données d'un fichier vers une base MySQL, on utilise la requête SQL LOAD DATA INFILE
Importons toutes les données du fichier "mesclients.txt" dans la table clients.mysql> LOAD DATA INFILE "C:/mesclients.txt"
-> INTO TABLE clients (idclient, nom, prenom, adresse, codepostal, ville);
Importer depuis un fichier csv
Exemple de contenu de fichier csv"GRA004";"GRANT";"William";"rue des presidents";"75000";"Paris"
"JAM005";"JAMES";"René""rue du petit chemin";"64000";"Pau"
"DEL006";"DELOIN";"Anthony""rue des basques";"33000";"Bordeaux"
mysql> LOAD DATA INFILE "c:/fichier.csv" INTO TABLE clients
-> FIELDS TERMINATED BY ";" ENCLOSED BY '"' ESCAPED BY "\\"
-> LINES STARTING BY '' TERMINATED BY '\n'
-> (idclient, nom, prenom, adresse, codepostal, ville);
La première ligne est ici la seule ligne obligatoire car si vous ne spécifiez rien,
- le séparateur de champ par défaut est la tabulation (TERMINATED BY '\t'),
- il n'y a pas de caractère qui entoure les champs (ENCLOSED BY ''),
- le caractère d'échappement des caractères par défaut est \ (ESCAPED BY '\\')
- et les lignes sont terminées par un retour à la ligne (TERMINATED BY '\n').
Note : Pour exécuter une sauvegarde, on aurais pu utiliser la commande "PAGER" d'UNIX mais elle ne ne fonctionne pas sous Windows.
Importer depuis l'invite de commande DOS
Sous la commande DOS, faire un cd "C:\Program Files\MySQL\MySQL Server x.0\bin" ou si vous utilisez EASYPHP "C:\Program Files\EasyPHP1-x\mysql\bin"
Faire un fichier texte de données sans les noms des colonnesC:\Program Files\MySQL\MySQL Server x.0\bin>
mysql -e "LOAD DATA INFILE 'c:/mon.txt' INTO TABLE mabase.clients" -u root -h localhost -p
mysql> SOURCE c:\masauvegarde.txt;
mysql> mysqlimport mabase
-> "c:/animaux.txt";