1. Home
  2. Bases de données
  3. Comment importer/exporter des bases de données en ligne de commande (mode user)

Comment importer/exporter des bases de données en ligne de commande (mode user)

Introduction

Avant d’expliquer les principes fondamentaux de cet article pédagogique, il convient de s’assurer que le lecteur est familier avec certaines notions. Nous commencerons donc par définir les termes que nous emploierons, en utilisant parfois des traductions anglaises de mots usuels en informatique. Nous expliquerons en même temps les concepts sous-tendant les principes qui nous occupent.

Ensuite, en utilisant des exemples tirés de MySQL, nous aborderons l’application concrète des concepts enseignés.

Enfin, quelques références à consulter seront proposées.

Note : Le glossaire contient  des explications sur de multiples sujets et peut être consulté pour clarifier certains termes.

Terminologie et concepts de base

Il s’avère parfois nécessaire de récupérer l’ensemble des données que contient une base de données, que ce soit pour faire une sauvegarde (backup) ou pour passer à une autre base de données. Le terme « exportation » désigne précisément l’action de formater dans un fichier d’exportation, appelé dump, toutes les informations nécessaires à la création d’une base de données identique à la première. Le terme « importation » désigne l’opération inverse : créer dans un SGBD une nouvelle base de données à partir d’un fichier d’exportation.

Il faut ici bien comprendre ce qu’est une interface en ligne de commande ILC (command line interface/CLI). Une ILC est une interface homme-machine dans laquelle l’usager interagit avec un système informatique en entrant des lignes d’instructions textuelles visant à demander à l’ordinateur d’effectuer des opérations, lesquelles sont interprétées par un Shell (cela par opposition à l’emploi d’une interface graphique appelée en anglais Graphic User Interface, ou GUI). La Figure 1 montre un exemple de lignes d’instructions d’une ILC rédigées en MySQL.

mysqldump -h host -u user
-ppass -rfichier base_de_donnees [tables]

Figure 1 – Lignes d’instructions textuelles d’une interface en ligne de commande (MySQL)

Le schéma à la Figure 2 résume le principe de base de l’importation et de l’exportation d’une base de données en ligne de commande dans un SGDB :

Figure 2 — Importation et exportation d’une base de données dans un SGBD

L’interprétation de la ligne de commande par le Shell peut se faire de deux manières : en mode Kernel ou en mode user. Dans ce dernier mode qui nous intéresse ici – celui des applications notamment – le code exécuté n’a pas accès directement au matériel informatique (hardware) ou à une location en mémoire comme c’est le cas en mode Kernel, avec tous les risques que cela comporte. Au contraire, en mode user, le code délègue plutôt ces accès aux interfaces de programmation d’application (Application Programming Interface API) du système.

Pour résumer ce que nous avons vu jusqu’à maintenant, notre but est d’expliquer les principes fondamentaux ayant trait au formatage dans un fichier (dump) de toutes les informations nécessaires à la création d’une base de données identique à une base de données de départ – l’exportation – et à la création d’une nouvelle base de données à partir d’un tel fichier — l’importation – et ce, en communiquant avec l’ordinateur au moyen d’instructions textuelles qui ne permettent pas d’accéder directement au hardware ou à une location en mémoire.

Exemples d’emploi de lignes de commandes

Dans l’optique d’illustrer concrètement les principes que nous avons expliqués jusqu’à maintenant, nous procéderons par l’exemple. Nous traiterons des outils que propose MySQL afin d’exporter ses bases vers d’autres SGBD ou encore de les importer en ligne de commande.

Exportation complète d’une base de données MySQL

La principale commande en ligne pour exporter des données s’appelle mysql. Cette commande permet d’exporter l’intégralité d’une base de données hébergée par MySQL. En voici la syntaxe :

mysql -h host -u user -ppass base_de_donnees > fichier_dump

La notation suivante est également possible :

mysql --host host --user user
--passwordpass base_de_donnees > fichier_dump

Voici la définition de chaque terme :

  • host : nom ou adresse IP de la machine sur laquelle la base de données à exporter est installée (localhost par défaut, c’est-à-dire la machine à partir de laquelle la commande mysql est lancée).
  • user : utilisateur avec lequel on désire se connecter (par défaut, root).
  • password : mot de passe de l’utilisateur avec lequel on désire se connecter.
  • base_de_donnees : nom de la base de données à exporter.
  • fichier_dump : nom du fichier dans lequel la base de données va être exportée.

Dans l’exemple suivant, la ligne de commande permet d’exporter la base de données nommée employes située sur la machine db.compagnie et appartenant à l’utilisateur ecole dont le mot de passe est 9a7e :

mysql -h db.compagnie -u ecole -p9a7e employes > employes.sql

Exportation partielle d’une base de données MySQL avec mysqldump

Il est parfois nécessaire d’avoir la souplesse de n’exporter qu’une partie d’une base de données, comme une table ou portion d’une table, ou même d’exporter plusieurs bases de données. Voici la syntaxe de la commande mysqldump conçue pour cet usage :

mysqldump [options] base_de_donnees [tables]

Les options généralement utilisées sont les suivantes :

mysqldump -h host -u user
-ppass -rfichier base_de_donnees [tables]

Outre les options host, user et pass définies précédemment, on remarque l’option fichier, qui est le nom du fichier dans lequel la base de données va être exportée.

Dans cet exemple, les tables nom et ville sont importées :

mysql -h db.compagnie -u ecole -p9a7e oemployes.sql employes nom ville

Il est même possible d’utiliser des conditions SQL grâce au commutateur -w (where), la commande située après étant délimitée par des guillemets doubles ou simples. Ainsi :

mysql -h db.compagnie -u ecole -p9a7e oemployes.sql -w "id>10" employes nom ville

Importation d’une base de données MySQL

mysql sert également à importer une base de données. En voici la notation en utilisant la redirection < et en indiquant le fichier dump contenant les instructions SQL à importer :

mysql -h host -u user -ppass base_de_donnees < fichier_dump

On peut aussi utiliser cette notation :

mysql --host host --user user
-passwordpass base_de_donnees < fichier_dump

Références

Le lecteur intéressé à obtenir davantage de détails peut lire les références suivantes, qui ont été consultées afin d’élaborer ce texte :

Updated on janvier 9, 2024

Related Articles