Code : SQL
SOURCE C:\Document and Settings\dossierX\monFichier.sql;
Insérer des données à partir d'un fichier formaté
Par fichier formaté, j'entends un fichier qui suit certaines règles de format. Un exemple typique serait les fichiers .csv. Ces
fichiers contiennent un certain nombre de données et sont organisés en tables. Chaque ligne correspond à une entrée, et les
colonnes de la table sont séparées par un caractère défini (souvent une virgule ou un point-virgule). Ceci par exemple, est un
format csv :
Code : CSV
nom;prenom;date_naissance
Charles;Myeur;1994-12-30
Bruno;Debor;1978-05-12
Mireille;Franelli;1990-08-23
Ce type de fichier est facile à produire (et à lire) avec un logiciel de type tableur (Microsoft Excel, ExcelViewer, Numbers…). La
bonne nouvelle est qu'il est aussi possible de lire ce type de fichier avec MySQL, afin de remplir une table avec les données
contenues dans le fichier.
La commande SQL permettant cela est LOAD DATA INFILE, dont voici la syntaxe :
Code : SQL
LOAD DATA [LOCAL] INFILE 'nom_fichier'
INTO TABLE nom_table
[FIELDS
[TERMINATED BY '\t']
[ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES
[STARTING BY '']
[TERMINATED BY '\n']
]
[IGNORE nombre LINES]
[(nom_colonne,...)];
Le mot-clé LOCAL sert à spécifier si le fichier se trouve côté client (dans ce cas, on utilise LOCAL) ou côté serveur (auquel cas,
on ne met pas LOCAL dans la commande). Si le fichier se trouve du côté serveur, il est obligatoire, pour des raisons de sécurité,
qu'il soit dans le répertoire de la base de données, c'est-à-dire dans le répertoire créé par MySQL à la création de la base de
données, et qui contient les fichiers dans lesquels sont stockées les données de la base. Pour ma part, j'utiliserai toujours
LOCAL, afin de pouvoir mettre simplement mes fichiers dans mon dossier de travail.
Les clauses FIELDS et LINES permettent de définir le format de fichier utilisé. FIELDS se rapporte aux colonnes, et LINES
aux lignes (si si
). Ces deux clauses sont facultatives. Les valeurs que j'ai mises ci-dessus sont les valeurs par défaut.
Si vous précisez une clause FIELDS, il faut lui donner au moins une des trois "sous-clauses".
TERMINATED BY, qui définit le caractère séparant les colonnes, entre guillemets bien sûr. '\t' correspond à une
tabulation. C'est le caractère par défaut.
ENCLOSED BY, qui définit le caractère entourant les valeurs dans chaque colonne (vide par défaut).
ESCAPED BY, qui définit le caractère d'échappement pour les caractères spéciaux. Si par exemple vous définissez vos
valeurs comme entourées d'apostrophes, mais que certaines valeurs contiennent des apostrophes, il faut échapper ces
apostrophes "internes" afin qu'elles ne soient pas considérées comme un début ou une fin de valeur. Par défaut, il s'agit
du \ habituel. Remarquez qu'il faut lui-même l'échapper dans la clause.
Partie 1 : MySQL et les bases du langage SQL
49/414
www.openclassrooms.com
SOURCE C:\Document and Settings\dossierX\monFichier.sql;
Insérer des données à partir d'un fichier formaté
Par fichier formaté, j'entends un fichier qui suit certaines règles de format. Un exemple typique serait les fichiers .csv. Ces
fichiers contiennent un certain nombre de données et sont organisés en tables. Chaque ligne correspond à une entrée, et les
colonnes de la table sont séparées par un caractère défini (souvent une virgule ou un point-virgule). Ceci par exemple, est un
format csv :
Code : CSV
nom;prenom;date_naissance
Charles;Myeur;1994-12-30
Bruno;Debor;1978-05-12
Mireille;Franelli;1990-08-23
Ce type de fichier est facile à produire (et à lire) avec un logiciel de type tableur (Microsoft Excel, ExcelViewer, Numbers…). La
bonne nouvelle est qu'il est aussi possible de lire ce type de fichier avec MySQL, afin de remplir une table avec les données
contenues dans le fichier.
La commande SQL permettant cela est LOAD DATA INFILE, dont voici la syntaxe :
Code : SQL
LOAD DATA [LOCAL] INFILE 'nom_fichier'
INTO TABLE nom_table
[FIELDS
[TERMINATED BY '\t']
[ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES
[STARTING BY '']
[TERMINATED BY '\n']
]
[IGNORE nombre LINES]
[(nom_colonne,...)];
Le mot-clé LOCAL sert à spécifier si le fichier se trouve côté client (dans ce cas, on utilise LOCAL) ou côté serveur (auquel cas,
on ne met pas LOCAL dans la commande). Si le fichier se trouve du côté serveur, il est obligatoire, pour des raisons de sécurité,
qu'il soit dans le répertoire de la base de données, c'est-à-dire dans le répertoire créé par MySQL à la création de la base de
données, et qui contient les fichiers dans lesquels sont stockées les données de la base. Pour ma part, j'utiliserai toujours
LOCAL, afin de pouvoir mettre simplement mes fichiers dans mon dossier de travail.
Les clauses FIELDS et LINES permettent de définir le format de fichier utilisé. FIELDS se rapporte aux colonnes, et LINES
aux lignes (si si
). Ces deux clauses sont facultatives. Les valeurs que j'ai mises ci-dessus sont les valeurs par défaut.
Si vous précisez une clause FIELDS, il faut lui donner au moins une des trois "sous-clauses".
TERMINATED BY, qui définit le caractère séparant les colonnes, entre guillemets bien sûr. '\t' correspond à une
tabulation. C'est le caractère par défaut.
ENCLOSED BY, qui définit le caractère entourant les valeurs dans chaque colonne (vide par défaut).
ESCAPED BY, qui définit le caractère d'échappement pour les caractères spéciaux. Si par exemple vous définissez vos
valeurs comme entourées d'apostrophes, mais que certaines valeurs contiennent des apostrophes, il faut échapper ces
apostrophes "internes" afin qu'elles ne soient pas considérées comme un début ou une fin de valeur. Par défaut, il s'agit
du \ habituel. Remarquez qu'il faut lui-même l'échapper dans la clause.
Partie 1 : MySQL et les bases du langage SQL
49/414
www.openclassrooms.com
