Recherche…


Syntaxe

  1. LOAD DATA [LOW_PRIORITY | CONCURRENCE] [LOCAL] INFILE 'nom_fichier'
  2. INTO TABLE nom_de_table
  3. [CHARACTER SET charset]
  4. [{CHAMPS | COLUMNS} [TERMINATED BY 'string'] [[FACULTATIF] ENCLOS PAR 'char']]
  5. [LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
  6. [Numéro IGNORE {LINES | ROWS}]
  7. [(col_name_or_user_var, ...)]
  8. [SET col_name = expr, ...]

utiliser LOAD DATA INFILE pour charger une grande quantité de données dans la base de données

Considérez l'exemple suivant en supposant que vous avez un fichier CSV délimité par un fichier ';' à charger dans votre base de données.

1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
.
.
.
1000000;marta;female;accountant;15-6-1992

Créez la table pour l'insertion.

CREATE TABLE `employee` ( `id` INT NOT NULL ,
                          `name` VARCHAR NOT NULL, 
                          `sex` VARCHAR NOT NULL ,
                          `designation` VARCHAR NOT NULL ,
                          `dob` VARCHAR NOT NULL   );                              

Utilisez la requête suivante pour insérer les valeurs dans cette table.

LOAD DATA INFILE 'path of the file/file_name.txt' 
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,dob)

Prenons le cas où le format de date est non standard.

1;max;male;manager;17-Jan-1985
2;jack;male;executive;01-Feb-1992
.
.
.
1000000;marta;female;accountant;25-Apr-1993

Dans ce cas, vous pouvez changer le format de la colonne dob avant de l'insérer comme ceci.

LOAD DATA INFILE 'path of the file/file_name.txt' 
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,@dob)
SET date = STR_TO_DATE(@date, '%d-%b-%Y');

Cet exemple de LOAD DATA INFILE ne spécifie pas toutes les fonctionnalités disponibles.

Vous pouvez voir plus de références sur LOAD DATA INFILE ici .

Importer un fichier CSV dans une table MySQL

La commande suivante permet d'importer des fichiers CSV dans une table MySQL avec les mêmes colonnes tout en respectant les règles de citation et d'échappement CSV.

load data infile '/tmp/file.csv'
into table my_table
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\n'
ignore 1 lines; -- skip the header row

Charger des données avec des doublons

Si vous utilisez la LOAD DATA INFILE pour remplir une table avec des données existantes, vous constaterez souvent que l'importation échoue en raison de doublons. Il existe plusieurs manières possibles de surmonter ce problème.

CHARGER LES DONNÉES LOCALES

Si cette option a été activée sur votre serveur, elle peut être utilisée pour charger un fichier existant sur l'ordinateur client plutôt que sur le serveur. Un effet secondaire est que les lignes en double pour les valeurs uniques sont ignorées.

LOAD DATA LOCAL INFILE 'path of the file/file_name.txt' 
INTO TABLE employee

LOAD DATA INFILE 'fname' REMPLACER

Lorsque le mot-clé replace est utilisé, les clés uniques ou primaires dupliquées entraîneront le remplacement de la ligne existante par de nouvelles.

LOAD DATA INFILE 'path of the file/file_name.txt' 
REPLACE INTO TABLE employee

LOAD DATA INFILE 'fname' IGNORE

À l'inverse de REPLACE , les lignes existantes seront conservées et les nouvelles ignorées. Ce comportement est similaire à LOCAL décrit ci-dessus. Toutefois, le fichier n'a pas besoin d'exister sur l'ordinateur client.

LOAD DATA INFILE 'path of the file/file_name.txt' 
IGNORE INTO TABLE employee

Charger via la table intermédiaire

Parfois, ignorer ou remplacer tous les doublons peut ne pas être l'option idéale. Vous devrez peut-être prendre des décisions en fonction du contenu des autres colonnes. Dans ce cas, la meilleure option est de charger dans une table intermédiaire et de transférer à partir de là.

INSERT INTO employee SELECT * FROM intermediary WHERE ...

import / export

importer

SELECT a,b,c  INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;

Exportation

LOAD DATA INFILE 'result.txt' INTO TABLE table;


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow