MySQL 如何使用“FIELDS TERMINATED BY”选项将文本文件中的数据导入MySQL表?

MySQL 如何使用“FIELDS TERMINATED BY”选项将文本文件中的数据导入MySQL表?

阅读更多:MySQL 教程

前言

在MySQL数据库中,我们可以通过LOAD DATA INFILE语句将本地文件中的数据导入到数据库表中。如果在本地文件中的数据是以某种分隔符隔开的,我们可以使用FIELDS TERMINATED BY选项告诉MySQL以何种分隔符来读取文件数据。本文将详细介绍如何使用“FIELDS TERMINATED BY”选项将文本文件中的数据导入MySQL表。

创建文件

首先,我们需要创建一个文本文件,并填入一些测试数据。为了举例说明,我们这里选择将数据以逗号分隔的形式保存在文件中。具体代码如下:

1,John Doe,john@example.com
2,Jane Smith,jane@example.com
3,Bob Johnson,bob@example.com
4,Emily Chen,emily@example.com
5,Mike Li,mike@example.com

在实际使用中,可以根据需求选择不同的分隔符,如TAB、分号等。根据文件中数据的实际情况而定。

创建表

接下来,我们需要在MySQL数据库中创建一个表,以存储文件中的数据。我们可以基于文件中每一行数据的内容来定义表的结构和类型。下面是一个示例表结构:

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

这里我们定义了一个名为“users”的表,包含三个字段:id、name和email。其中,id字段是一个整数类型,name和email字段是字符串类型。为了防止插入重复数据,我们将id字段设为主键。

导入数据

有了文件和表,我们可以开始导入数据了。MySQL的LOAD DATA INFILE语句可以让我们轻松地将文件中的数据插入到表中。具体语法如下:

LOAD DATA INFILE 'filename'
INTO TABLE `tablename`
[CHARACTER SET charset_name]
[IGNORE number LINES]
(field1, @var1, field2, @var2, field3, @var3)
SET
`id` = NULLIF(@var1,''),
`name` = NULLIF(@var2,''),
`email` = NULLIF(@var3,'');

其中:

  • filename为要导入的文件名,可以是本地文件或远程文件;
  • tablename为要插入数据的表名;
  • CHARSET为导入时指定的字符编码,默认为utf8;
  • IGNORE number LINES为可选项,用于忽略文件开头的n行数据;
  • field1、field2、field3为表中的字段名;
  • @var1、@var2、@var3为中间变量,用于存储文件中的数据;
  • SET子句用于将中间变量中的内容插入到表中对应的字段中。

需要注意的是,在使用LOAD DATA INFILE命令导入数据时,MySQL默认使用“\t”作为字段分隔符,因此我们需要手动指定使用逗号作为分隔符。这可以通过在LOAD DATA INFILE命令中添加FIELDS TERMINATED BY选项来实现。具体代码如下:

LOAD DATA INFILE 'filename'
INTO TABLE `tablename`
FIELDS TERMINATED BY ','
IGNORE number LINES
(field1, @var1, field2, @var2, field3, @var3)
SET
`id` = NULLIF(@var1,''),
`name` = NULLIF(@var2,''),
`email` = NULLIF(@var3,'');

执行上述代码后,我们就成功地将文件中的数据导入到了MySQL表中。可以使用SELECT语句来验证插入是否成功:

SELECT * FROM `users`;

可以看到,表中已经成功插入了文件中的数据。

结论

本文介绍了如何使用“FIELDS TERMINATED BY”选项将文本文件中的数据导入MySQL表。通过指定分隔符,我们可以方便地将文件中的数据导入到MySQL数据库中的指定表中。同时,还需要注意使用LOAD DATA INFILE命令时,要注意指定正确的字符编码和分隔符,以避免数据插入错误或乱码等问题。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程