MYSQL LOAD DATA INFILE 忽略重复行(自动增量为主键)

作者:编程家 分类: mysql 时间:2025-07-26

使用MYSQL的LOAD DATA INFILE命令可以方便地将数据从文件导入到数据库中。然而,有时候我们希望在导入过程中忽略重复行,特别是当我们的表中有自动增量的主键时。下面将介绍如何在使用LOAD DATA INFILE命令时忽略重复行,并提供一个案例代码。

首先,让我们来看一下LOAD DATA INFILE命令的基本语法:

LOAD DATA INFILE 'filename'

IGNORE

INTO TABLE tablename

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\n'

(column1, column2, column3, ...)

在上述语法中,'filename'是要导入的文件名,tablename是目标表的名称,而column1、column2、column3等是目标表中的列名。在导入数据时,我们可以使用IGNORE关键字来告诉MYSQL忽略重复的行。

下面是一个示例,假设我们有一个名为students的表,其中有两列:id和name。id是自动增量的主键。

sql

CREATE TABLE students (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(50)

);

我们准备了一个名为students.csv的文件,内容如下:

1,John

2,Alice

3,Bob

1,John

4,Mike

现在,我们将使用LOAD DATA INFILE命令将students.csv文件中的数据导入到students表中,并忽略重复的行。代码如下:

sql

LOAD DATA INFILE 'students.csv'

IGNORE

INTO TABLE students

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\n'

(id, name);

在上述代码中,我们使用了IGNORE关键字来告诉MYSQL忽略重复的行。在导入数据完成后,我们可以查询students表来验证导入结果:

sql

SELECT * FROM students;

查询结果应该如下所示:

+----+-------+

| id | name |

+----+-------+

| 1 | John |

| 2 | Alice |

| 3 | Bob |

| 4 | Mike |

+----+-------+

可以看到,重复的行被忽略了,只有唯一的行被成功导入到了students表中。

案例代码:

sql

CREATE TABLE students (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(50)

);

LOAD DATA INFILE 'students.csv'

IGNORE

INTO TABLE students

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\n'

(id, name);

SELECT * FROM students;

通过使用MYSQL的LOAD DATA INFILE命令和IGNORE关键字,我们可以很容易地将数据从文件导入到数据库中,并忽略重复的行。这在处理大量数据时非常有用,特别是当我们的表中有自动增量的主键时。希望本文对你有所帮助!