Daten INFILE in MySQL laden
In diesem Tutorial möchten wir untersuchen, wie Daten aus CSV mithilfe von data INFILE in die MySQL-Datenbank importiert werden.
Um Daten aus einer Textdatei oder einer CSV-Datei mit sehr hoher Geschwindigkeit zu lesen, verwenden wir in MySQL die Anweisung LOAD DATA INFILE
. Außerdem wird ein LOCAL
-Wort eingeführt, wenn die Datei vom Host berücksichtigt werden muss.
Bevor wir Informationen aus einer Datei lesen, müssen wir sicherstellen, dass sich die CSV- oder Textdatei in der Datenbank befindet und über Leseberechtigungen verfügen sollte.
Die grundlegende Syntax der Anweisung LOAD DATA INFILE
ist wie folgt.
LOAD DATA LOCAL INFILE "./csv_file.csv" INTO TABLE database_name.name_of_table;
Wir lesen nun aus einer CSV-Datei namens fileCSV.csv
in die Datenbank students
ein. Wir nennen unsere Tabelle in der Datenbank students
student_details
.
Wir erstellen jedoch einen Dummy-Datensatz, an dem wir arbeiten können, bevor wir beginnen. Wir erstellen eine Tabelle, student_details
, zusammen mit einigen Zeilen.
-- 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");
Daten in unserer CSV-Datei enthalten Informationen wie stu_id
, stu_firstName
und stu_lastName
, aber mit unterschiedlicher stu_id
. Ein Schnappschuss unserer CSV-Datei sieht wie folgt aus.
Lassen Sie uns zunächst damit beginnen, eine Datenbank mit dem Namen Studenten
zu erstellen. Wir können dies mit der folgenden Abfrage tun.
CREATE DATABASE students;
Wir können die folgende Abfrage schreiben, um unsere CSV-Datei in unsere students
-Datenbank zu importieren.
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;
Dies würde die folgende Ausgabe ergeben:
Query OK, 6 rows affected (0.01 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
Wenn wir die Tabelle student_details
in der Datenbank students
überprüfen, erhalten wir die folgende Ausgabe:
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
Wir können aus dem obigen Codeblock schließen, dass wir unsere student_details
-Tabelle aktualisiert haben. Wir haben jetzt die Daten in der CSV-Datei an unsere Tabelle angehängt.
Daher können wir mit Hilfe der Methode LOAD DATA INFILE
effizient Daten aus einer externen CSV- oder Textdatei in eine Tabelle in MySQL schreiben.