如何将 CSV 文件导入 MySQL 数据库中的表中
![如何将 CSV 文件导入 MySQL 数据库中的表中](/img/MySQL/feature-image---mysql-import-csv.webp)
本教程文章将介绍两种从逗号分隔值(CSV
)文件中导入数据到 MySQL 数据库并插入到表中的方法。
我们将介绍将 CSV 文件导入 MySQL 的不同方法。这个任务可以通过执行一系列 SQL 命令,以编程的方式完成;也可以通过交互式的方式,使用图形化 MySQL 客户端的文件导入对话框,如 HeidiSQL。
LOAD DATA INFILE SQL
将 CSV 导入到 MySQL 中
我们先来看看如何使用 LOAD DATA INFILE SQL
语句来程序化地导入 CSV 文件。
在导入文件之前,需要先创建包含导入数据的表。假设你的 CSV 文件包含图书信息,分为 ISBN、Title、Author 和 ListPrice 字段。要创建这样一个表,你需要执行这样的命令。
CREATE TABLE BooksCSV (
ISBN VARCHAR(255) NULL,
title VARCHAR(255) NULL,
author VARCHAR(255) NULL,
ListPrice VARCHAR(255) NULL
);
建议所有的字段都接纳 NULL 值,并且表没有主键,因为事先并不知道 CSV 文件中的数据是否完整和规范。
另一个建议是,即使是数字数据,也只使用 VARCHAR
字段,以防止文件中的数据格式不正确而导致处理错误。导入数据后,可以直接在数据库中进行清理,读取表的数,并进行必要的验证和修正。
有了数据的目标表后,需要确定 CSV 文件的路径。假设该文件的完整路径是 C:\csvdata\books.csv
。那么,要将该文件导入到你的表中,你应该执行命令。
LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV `
LOAD DATA INFILE
语句要求你指定源文件和目标表。也可以选择指定其他参数,如字段分隔符、文本限定符和是否存在标题行。
在下面的例子中,添加的参数指定字段用逗号分隔,字符串用双引号括起来,第一行必须被忽略,因为它包含列标题。
LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
IGNORE 1 ROWS;
现在,你知道如何在 MySQL 中以编程方式导入 CSV 文件了。
使用 HeidiSQL 向 MySQL 导入 CSV 文件
我们来看看如何使用图形化的 MySQL 客户端(如 HeidiSQL)进行交互式操作。
步骤和我们上面看到的一样。
- 创建表
- 将文件的内容导入其中。
使用 HeidiSQL 创建表时,需要将客户端连接到 MySQL 服务器,选择要导入数据的数据库。然后点击数据库上的右键,选择创建新的-表选项。
你必须在相应的字段中输入表的名称并添加列。要添加一个列,点击+
按钮,并输入其名称和数据类型。
在本例中,表的名称为 BooksCSV
,字段与我们在前面的例子中使用的相同。
完成添加列后,单击保存在数据库中创建表。
创建完表后,就可以从 CSV 文件中导入数据了。但是在启动导入过程之前,你需要通过改变客户端和服务器组件的启动参数,启用在客户端和服务器组件上加载本地数据。在启用加载本地数据时,你必须考虑到一些安全因素。要了解更多关于它们的信息,请阅读 MySQL 官方文档中的本文。
当你准备好导入 CSV 文件时,进入 HeidiSQL 的工具菜单,选择导入 CSV 文件选项。你必须指定要导入的 CSV 文件路径,并选择要插入导入数据的数据库和表。如果表中的字段和文件上的字段一样多,可以取消选中表字段。最后,点击 导入!
,这个过程就会开始。
为了执行导入,图形界面会发出与我们之前描述的程序化选项相同的 LOAD DATA 命令,所以最终的结果几乎是一样的-数据库表将被从 CSV 文件中读取的数据填充。
关于使用 LOAD DATA 语句的更多信息,请查看 MySQL 官方文档中的本文。