MySQL::MySQL 5.7 Manuel de référence ::3.3.3 Chargement des données dans une Table

3.3.3 Chargement des données dans une Table

Après avoir créé votre table, vous devez la remplir. Les instructions LOAD DATA et INSERT sont utiles pour cela.

Supposons que vos enregistrements d’animaux puissent être décrits comme indiqué ici. (Observez que MySQL attend des dates au format 'YYYY-MM-DD'; cela peut différer de ce à quoi vous êtes habitué.)

name owner species sex birth death
Fluffy Harold cat f 1993-02-04
Claws Gwen cat m 1994-03-17
Buffy Harold dog f 1989-05-13
Fang Benny dog m 1990-08-27
Bowser Diane chien m 1979-08-31 1995-07-29
Chirpy Gwen oiseau f 1998-09-11
Whistler Gwen bird 1997-12-09
Slim Benny snake m 1996-04-29

Parce que vous commencez avec une table vide, un moyen facile de la remplir est de créer un fichier texte contenant une ligne pour chacun de vos animaux, puis chargez le contenu du fichier dans la table avec une seule instruction.

Vous pouvez créer un fichier texte pet.txt contenant un enregistrement par ligne, avec des valeurs séparées par des onglets, et données dans l’ordre dans lequel les colonnes ont été répertoriées dans l’instruction CREATE TABLE. Pour les valeurs manquantes (telles que les sexes inconnus ou les dates de décès des animaux encore vivants), vous pouvez utiliser les valeurs NULL. Pour les représenter dans votre fichier texte, utilisez \N (barre oblique inverse, majuscule-N). Par exemple, l’enregistrement de Whistler the bird ressemblerait à ceci (où l’espace entre les valeurs est un seul caractère de tabulation) :

Whistler Gwen bird \N 1997-12-09 \N

Pour charger le fichier texte pet.txt dans la table pet, utilisez cette instruction :

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;

Si vous avez créé le fichier sous Windows avec un éditeur qui utilise \r\ncomme terminateur de ligne, vous devez utiliser cette instruction à la place :

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet LINES TERMINATED BY '\r\n';

(Sur une machine Apple exécutant macOS, vous voudrez probablement utiliser LINES TERMINATED BY '\r'.)

Vous pouvez spécifier explicitement le séparateur de valeurs de colonne et le marqueur de fin de ligne dans l’instruction LOAD DATA si vous le souhaitez, mais les valeurs par défaut sont tab et linefeed. Ceux-ci sont suffisants pour que l’instruction lise correctement le fichier pet.txt.

Si l’instruction échoue, il est probable que votre installation MySQL n’a pas la capacité de fichier local activée par défaut. Voir la section 6.1.6, « Considérations de sécurité pour les DONNÉES DE CHARGEMENT LOCALES »” pour plus d’informations sur la façon de modifier cela.

Lorsque vous souhaitez ajouter de nouveaux enregistrements un à la fois, l’instruction INSERT est utile. Dans sa forme la plus simple, vous fournissez des valeurs pour chaque colonne, dans l’ordre dans lequel les colonnes ont été répertoriées dans l’instruction CREATE TABLE. Supposons que Diane reçoive un nouveau hamster nommé « Puffball.”Vous pouvez ajouter un nouvel enregistrement en utilisant une instruction INSERT comme ceci:

mysql> INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

Les valeurs de chaîne et de date sont spécifiées comme chaînes entre guillemets ici. De plus, avec INSERT, vous pouvez insérer NULL directement pour représenter une valeur manquante. Vous n’utilisez pas \N comme vous le faites avec LOAD DATA.

À partir de cet exemple, vous devriez pouvoir voir qu’il y aurait beaucoup plus de typage impliqué pour charger vos enregistrements en utilisant initialement plusieurs instructions INSERT plutôt qu’une seule instruction LOAD DATA.