Charger les données INFILE dans MySQL
Dans ce tutoriel, nous visons à explorer comment importer des données à partir de CSV en utilisant les données INFILE dans la base de données MySQL.
Pour lire les données d’un fichier texte ou d’un CSV à très grande vitesse, nous utilisons l’instruction LOAD DATA INFILE
dans MySQL. De plus, un mot LOCAL
est introduit si le fichier doit être pris en compte par l’hébergeur.
Avant de lire les informations d’un fichier, nous devons nous assurer que le fichier CSV ou texte réside dans la base de données et doit avoir les autorisations pour être lu.
La syntaxe de base de l’instruction LOAD DATA INFILE
est la suivante.
LOAD DATA LOCAL INFILE "./csv_file.csv" INTO TABLE database_name.name_of_table;
Nous lisons maintenant un fichier CSV nommé fileCSV.csv
dans la base de données students
. Nous nommerons notre table dans la base de données students
comme student_details
.
Cependant, nous créons un jeu de données factice sur lequel travailler avant de commencer. Nous créons une table, student_details
, avec quelques lignes.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
Les données de notre fichier CSV contiennent des informations telles que stu_id
, stu_firstName
et stu_lastName
, mais avec des stu_id
différents. Un instantané de notre fichier CSV est le suivant.
Commençons d’abord par créer une base de données nommée students
. Nous pouvons le faire avec la requête suivante.
CREATE DATABASE students;
Nous pouvons écrire la requête suivante pour importer notre fichier CSV dans notre base de données students
.
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/fileCSV.csv' into table student_details fields terminated by ',' ENCLOSED BY '"' IGNORE 1 ROWS;
Cela donnerait la sortie suivante :
Query OK, 6 rows affected (0.01 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
Si nous vérifions la table student_details
dans la base de données students
, nous obtiendrons la sortie suivante :
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
9 Rich John
10 Veron Brow
11 Geo Jos
12 Hash Shah
13 Sachin Parker
14 David Miller
Nous pouvons déduire du bloc de code ci-dessus que nous avons mis à jour notre table student_details
. Nous avons maintenant les données dans le fichier CSV annexé à notre tableau.
Par conséquent, à l’aide de la méthode LOAD DATA INFILE
, nous pouvons écrire efficacement des données à partir d’un fichier CSV ou texte externe dans une table de MySQL.