Importation de données dans MySQL

Dans ce chapitre, nous présentons plusieurs commandes simples d'importation de données MySQL.

mysql -u your_username -p -h your_host -P your_port -D your_database

1. Importation à l'aide de la commande mysql

La syntaxe pour importer à l'aide de la commande mysql est :

mysql -u your_username -p -h your_host -P your_port -D your_database

your_username, your_host, your_port et your_database correspondent respectivement à votre nom d'utilisateur, votre hôte, votre port et votre base de données MySQL.

Exemple :

# mysql -uroot -p123456 < example.sql

La commande ci-dessus importera l'intégralité de la base de données sauvegardée example.sql.

Après avoir exécuté la commande ci-dessus, le système demandera le mot de passe de l'utilisateur MySQL. Saisissez le mot de passe et appuyez sur Entrée.

De cette façon, MySQL exécutera les instructions du fichier SQL et importera les données dans la base de données spécifiée.

Veuillez noter que si le fichier SQL contient des instructions pour créer une base de données, assurez-vous que la base de données existe déjà avant d'effectuer l'importation. Si le fichier contient des instructions pour créer des tables, assurez-vous que les tables n'existent pas ou sont vides, afin d'éviter les conflits lors de l'importation des données.


2. Importer à l'aide de la commande source

Pour importer une base de données à l'aide de la commande source, vous devez d'abord vous connecter au terminal de la base de données :

mysql> create database abc;      # 创建数据库
mysql> use abc;                  # 使用已创建的数据库 
mysql> set names utf8;           # 设置编码
mysql> source /home/abc/abc.sql  # 导入备份数据库

L'avantage d'utiliser la commande source est que vous pouvez l'exécuter directement dans la ligne de commande MySQL sans avoir à quitter MySQL et à utiliser d'autres commandes.


3. Importer des données à l'aide de LOAD DATA

MySQL fournit l'instruction LOAD DATA INFILE pour insérer des données. L'exemple suivant lit le fichier dump.txt depuis le répertoire courant et insère les données de ce fichier dans la table mytbl de la base de données courante.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

Si le mot-clé LOCAL est spécifié, cela indique que le fichier est lu par chemin depuis l'hôte client. S'il n'est pas spécifié, le fichier est lu par chemin sur le serveur.

Vous pouvez spécifier explicitement le délimiteur des valeurs de colonne et le marqueur de fin de ligne dans l'instruction LOAD DATA, mais les marqueurs par défaut sont le caractère de tabulation et le saut de ligne.

La syntaxe des clauses FIELDS et LINES est la même dans les deux commandes. Les deux clauses sont facultatives, mais si les deux sont spécifiées, la clause FIELDS doit apparaître avant la clause LINES.

Si l'utilisateur spécifie une clause FIELDS, ses sous-clauses (TERMINATED BY, [OPTIONALLY] ENCLOSED BY et ESCAPED BY) sont également facultatives. Toutefois, l'utilisateur doit en spécifier au moins une.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
  -> FIELDS TERMINATED BY ':'
  -> LINES TERMINATED BY '\r\n';

Par défaut, LOAD DATA insère les données selon l'ordre des colonnes dans le fichier de données. Si les colonnes du fichier de données ne correspondent pas aux colonnes de la table dans laquelle les données sont insérées, vous devez spécifier l'ordre des colonnes.

Par exemple, si l'ordre des colonnes dans le fichier de données est a,b,c, mais que l'ordre des colonnes dans la table est b,c,a, alors la syntaxe d'importation des données est la suivante :

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

4. Importer des données à l'aide de mysqlimport

Le client mysqlimport fournit une interface en ligne de commande pour l'instruction LOAD DATA INFILE. La plupart des options de mysqlimport correspondent directement aux clauses de LOAD DATA INFILE.

Pour importer des données depuis le fichier dump.txt dans la table de données mytbl, vous pouvez utiliser la commande suivante :

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

La commande mysqlimport peut spécifier des options pour définir le format spécifié. Le format de l'instruction de commande est le suivant :

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

Utilisez l'option --columns dans l'instruction mysqlimport pour définir l'ordre des colonnes :

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

Options courantes de mysqlimport

OptionFonction
-d ou --deleteSupprime toutes les informations de la table de données avant d'y importer de nouvelles données.
-f ou --force Que des erreurs soient rencontrées ou non, mysqlimport forcera la poursuite de l'insertion des données.
-i ou --ignore mysqlimport saute ou ignore les lignes ayant la même clé unique ; les données du fichier importé seront ignorées.
-l ou -lock-tables Verrouille la table avant l'insertion des données, empêchant ainsi les requêtes et les mises à jour des utilisateurs d'être affectées pendant que vous mettez à jour la base de données.
-r ou -replace Cette option a la fonction inverse de l'option -i ; elle remplacera les enregistrements dans la table qui ont la même clé unique.
--fields-enclosed- by= charSpécifie ce qui entoure les enregistrements de données dans le fichier texte. Dans de nombreux cas, les données sont entourées de guillemets doubles. Par défaut, les données ne sont entourées d'aucun caractère.
--fields-terminated- by=charSpécifie le délimiteur entre les valeurs de données. Dans les fichiers délimités par des points, le délimiteur est un point. Vous pouvez utiliser cette option pour spécifier le délimiteur entre les données. Le délimiteur par défaut est le caractère de tabulation (Tab).
--lines-terminated- by=strCette option spécifie la chaîne ou le caractère délimiteur entre les lignes de données dans le fichier texte. Par défaut, mysqlimport utilise le saut de ligne comme délimiteur de ligne. Vous pouvez choisir d'utiliser une chaîne au lieu d'un seul caractère : un saut de ligne ou un retour chariot.

Les autres options couramment utilisées de la commande mysqlimport incluent -v pour afficher la version, -p pour demander le mot de passe, etc.

Autres extensions