MySQL - Importation de base de données - Méthodes de récupération

Il existe deux façons simples dans MySQL de charger des données dans la base de données MySQL à partir d'un fichier précédemment sauvegardé.

Importation de données avec LOAD DATA

MySQL fournit une instruction LOAD DATA qui agit comme un chargeur de données en masse. Voici un exemple d'instruction qui lit un fichierdump.txt à partir de votre répertoire actuel et le charge dans la table mytbl dans la base de données actuelle.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
  • Si la LOCAL n'est pas présent, MySQL recherche le fichier de données sur l'hôte du serveur en utilisant le looking into absolute pathname, qui spécifie entièrement l'emplacement du fichier, en commençant par la racine du système de fichiers. MySQL lit le fichier à partir de l'emplacement indiqué.

  • Par défaut, LOAD DATA suppose que les fichiers de données contiennent des lignes terminées par des sauts de ligne (sauts de ligne) et que les valeurs de données dans une ligne sont séparées par des tabulations.

  • Pour spécifier un format de fichier explicitement, utilisez un FIELDS clause pour décrire les caractéristiques des champs dans une ligne, et un LINESclause pour spécifier la séquence de fin de ligne. Le suivantLOAD DATA indique que le fichier de données contient des valeurs séparées par des deux-points et des lignes terminées par des retours chariot et un caractère de nouvelle ligne.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
   -> FIELDS TERMINATED BY ':'
   -> LINES TERMINATED BY '\r\n';
  • La commande LOAD DATA suppose que les colonnes du fichier de données ont le même ordre que les colonnes de la table. Si ce n'est pas le cas, vous pouvez spécifier une liste pour indiquer dans quelles colonnes de table les colonnes du fichier de données doivent être chargées. Supposons que votre table comporte les colonnes a, b et c, mais que les colonnes successives du fichier de données correspondent aux colonnes b, c et a.

Vous pouvez charger le fichier comme indiqué dans le bloc de code suivant.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' 
   -> INTO TABLE mytbl (b, c, a);

Importer des données avec mysqlimport

MySQL comprend également un programme utilitaire nommé mysqlimport qui agit comme un wrapper autour de LOAD DATA, afin que vous puissiez charger les fichiers d'entrée directement à partir de la ligne de commande.

Pour charger des données depuis dump.txt dans mytbl, utilisez la commande suivante à l'invite UNIX.

$ mysqlimport -u root -p --local database_name dump.txt
password *****

Si tu utilises mysqlimport, les options de ligne de commande fournissent les spécificateurs de format. lemysqlimport commandes qui correspondent aux deux précédentes LOAD DATA les instructions ressemblent à celles du bloc de code suivant.

$ mysqlimport -u root -p --local --fields-terminated-by = ":" \
   --lines-terminated-by = "\r\n"  database_name dump.txt
password *****

L'ordre dans lequel vous spécifiez les options n'a pas d'importance pour mysqlimport, sauf qu'elles doivent toutes précéder le nom de la base de données.

le mysqlimport l'instruction utilise le --columns option pour spécifier l'ordre des colonnes -

$ mysqlimport -u root -p --local --columns=b,c,a \
   database_name dump.txt
password *****

Gestion des citations et des caractères spéciaux

La clause FIELDS peut spécifier d'autres options de format en plus TERMINATED BY. Par défaut, LOAD DATA suppose que les valeurs ne sont pas entre guillemets et interprète la barre oblique inverse (\) comme un caractère d'échappement pour les caractères spéciaux. Pour indiquer explicitement le caractère de citation de valeur, utilisez leENCLOSED BYcommander. MySQL supprimera ce caractère des extrémités des valeurs de données pendant le traitement des entrées. Pour modifier le caractère d'échappement par défaut, utilisezESCAPED BY.

Lorsque vous spécifiez ENCLOSED BY pour indiquer que les guillemets doivent être supprimés des valeurs de données, il est possible d'inclure le caractère guillemet littéralement dans les valeurs de données en le doublant ou en le précédant du caractère d'échappement.

Par exemple, si les guillemets et les caractères d'échappement sont "et \, la valeur d'entrée "a""b\"c" sera interprété comme a"b"c.

Pour mysqlimport, les options de ligne de commande correspondantes pour spécifier les valeurs de guillemet et d'échappement sont --fields-enclosed-by et --fields-escaped-by.