将 CSV 文件导入 MySQL 表

本教程将向您展示如何使用该 LOAD DATA INFILE 语句将 CSV 文件导入 MySQL 表。

该 LOAD DATA INFILE 语句允许您从文本文件中读取数据并将文件数据非常快速地导入到数据库表中。

在导入文件之前,您需要准备以下内容:

  • 文件中的数据将导入到的数据库表。
  • 包含与表的列数和每列中的数据类型匹配的数据的 CSV 文件。
  • 连接到 MySQL 数据库服务器的帐户具有 FILE 和 INSERT 权限。

假设我们有一个以 discounts 以下结构命名的表:

折扣表
折扣表

我们使用CREATE TABLE 语句创建 discounts 表如下:

CREATE TABLE discounts (
    id INT NOT NULL AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    expired_date DATE NOT NULL,
    amount DECIMAL(10 , 2 ) NULL,
    PRIMARY KEY (id)
);

以下 discounts.csv 文件包含作为列标题的第一行和其他三行数据。

折扣 csv 文件

以下语句将 c:\tmp\discounts.csv 文件中的数据 导入 discounts 表中。

LOAD DATA INFILE 'c:/tmp/discounts.csv' 
INTO TABLE discounts 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

文件的字段以逗号结尾, FIELD TERMINATED BY ',' 由 ENCLOSED BY '" ‘指定并用双引号括起来。

CSV 文件的每一行都以一个由 表示的换行符结尾 LINES TERMINATED BY '\n' 。

由于文件的第一行包含列标题,不应将其导入表中,因此我们通过指定 IGNORE 1 ROWS 选项将其忽略 。

现在,我们可以检查 discounts 表以查看数据是否已导入。

SELECT * FROM discounts;

折扣表数据

导入时转换数据

有时数据的格式与表中的目标列不匹配。在简单的情况下,您可以使用 SET 语句中的子句 对其进行转换 LOAD DATA INFILE 。

假设文件中的过期日期列 discount_2.csv 是 mm/dd/yyyy 格式。

折扣_2.csv文件
折扣_2.csv文件

在将数据导入 discounts 表中时,我们必须使用str_to_date() 函数将其转换为 MySQL 日期格式,如下所示:

LOAD DATA INFILE 'c:/tmp/discounts_2.csv'
INTO TABLE discounts
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(title,@expired_date,amount)
SET expired_date = STR_TO_DATE(@expired_date, '%m/%d/%Y');

将文件从客户端导入到远程 MySQL 数据库服务器

可以使用该 LOAD DATA INFILE 语句将数据从客户端(本地计算机)导入到远程 MySQL 数据库服务器。

当您使用 中的 LOCAL 选项时 LOAD DATA INFILE ,客户端程序读取客户端上的文件并将其发送到 MySQL 服务器。该文件将上传到数据库服务器操作系统的临时文件夹中,例如, C:\windows\temp 在 Windows 或 /tmp Linux 上。该文件夹不可配置或由 MySQL 确定。

让我们看一下下面的例子:

LOAD DATA LOCAL INFILE  'c:/tmp/discounts.csv'
INTO TABLE discounts
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

唯一的区别是 LOCAL 语句中的选项。如果你加载一个大的 CSV 文件,你会看到使用该 LOCAL 选项,加载文件会慢一点,因为将文件传输到数据库服务器需要时间。

使用该 LOCAL 选项时,连接到 MySQL 服务器的帐户不需要具有 FILE 权限来导入文件。

使用将文件从客户端导入到远程数据库服务器 LOAD DATA LOCAL 存在一些安全问题,您应该注意这些问题以避免潜在的安全风险。

使用 MySQL Workbench 导入 CSV 文件

MySQL Workbench 提供了将数据导入表的工具。它允许您在进行更改之前编辑数据。

以下是您要将数据导入表的步骤:

打开加载数据的表。

mysql 工作台导入 csv

单击导入按钮,选择一个 CSV 文件并单击打开按钮

将csv导入mysql

查看数据,单击应用按钮。

编辑表格内容

查看数据
查看数据

MySQL Workbench 会显示一个对话框“Apply SQL Script to Database”,点击Apply按钮将数据插入到表中。

我们已经向您展示了如何 LOAD DATA LOCAL 使用 MySQL Workbench将 CSV 导入 MySQL 表。使用这些技术,您可以从其他文本文件格式(例如制表符分隔)加载数据。