MySQL LOAD DATA LOCAL, 如何跳过第一行?

发布时间 2023-12-07 18:39:54作者: 风无心客

在MySQL中,使用LOAD DATA LOCAL命令可以将数据从本地的文件导入到数据库里面。常见的导入数据格式是csv和txt。

但是在导入csv和txt格式的数据时,第一行通常是表头,而不是数据,因此我们需要跳过第一行,只导入后面的数据。

阅读更多:MySQL 教程

 

方法一:使用IGNORE关键字

LOAD DATA LOCAL命令支持IGNORE关键字,可以忽略文件开头的行数。我们可以使用以下命令来跳过第一行:

LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE mytable IGNORE 1 LINES;
SQL

其中,IGNORE 1 LINES表示忽略文件的第一行。

方法二:使用SET关键字

LOAD DATA LOCAL命令也支持SET关键字,可以为导入的每一列设置一个值。我们可以使用以下命令来设置第一行:

LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE mytable 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(column1, @var1, column2)
SET column1 = NULLIF(@var1, '');
SQL

其中,@var1是一个变量,用来存储第一列的值,NULLIF函数用来将值转换为空值。

示例

假设我们有以下csv文件(data.csv):

name,age,gender
Tom,20,M
Mary,18,F
John,22,M
Mysql

我们想要将数据导入到MySQL的mytable表中,并跳过第一行的表头。我们可以使用以下命令:

 
LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE mytable 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
SQL

这个命令将会将Tom、Mary和John的数据导入到mytable表中。