在 MySQL 中加载数据 INFILE
Preet Sanghavi
2022年5月13日
在本教程中,我们旨在探索如何使用 MySQL 数据库中的数据 INFILE 从 CSV 导入数据。
为了以非常高的速度从文本文件或 CSV 读取数据,我们使用 MySQL 中的 LOAD DATA INFILE
语句。此外,如果主机需要考虑文件,则引入 LOCAL
字样。
在从文件中读取信息之前,我们必须确保 CSV 或文本文件驻留在数据库中并且应该具有被读取的权限。
LOAD DATA INFILE
语句的基本语法如下。
LOAD DATA LOCAL INFILE "./csv_file.csv" INTO TABLE database_name.name_of_table;
我们现在从名为 fileCSV.csv
的 CSV 文件读取到 students
数据库。我们将把 students
数据库中的表命名为 student_details
。
但是,在开始之前,我们会创建一个虚拟数据集来处理。我们创建了一个表 student_details
以及几行。
-- 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");
我们的 CSV 文件中的数据包含诸如 stu_id
、stu_firstName
和 stu_lastName
之类的信息,但具有不同的 stu_id
。我们的 CSV 文件的快照如下。
让我们首先创建一个名为 students
的数据库。我们可以使用以下查询来做到这一点。
CREATE DATABASE students;
我们可以编写以下查询将 CSV 文件导入我们的 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;
这将给出以下输出:
Query OK, 6 rows affected (0.01 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
如果我们检查 students
数据库中的 student_details
表,我们将得到以下输出:
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
我们可以从上面的代码块中推断出我们已经更新了我们的 student_details
表。我们现在将 CSV 文件中的数据附加到我们的表中。
因此,借助 LOAD DATA INFILE
方法,我们可以有效地将数据从外部 CSV 或文本文件写入 MySQL 中的表。
作者: Preet Sanghavi