在 MySQL 中加载数据 INFILE

Preet Sanghavi 2022年5月13日
在 MySQL 中加载数据 INFILE

在本教程中,我们旨在探索如何使用 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_idstu_firstNamestu_lastName 之类的信息,但具有不同的 stu_id。我们的 CSV 文件的快照如下。

加载数据 infile mysql

让我们首先创建一个名为 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
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub