批量导入数据MySQL实现一次性增加多行记录(mysql一次增加几行)

批量导入数据——MySQL实现一次性增加多行记录

在日常工作中,我们常常需要往数据库中添加大量数据记录。如果一条一条手动添加,耗费时间和精力。此时,批量导入数据就显得非常重要。MySQL数据库提供了丰富的工具和语句支持批量导入,其中一个优秀的方法是使用LOAD DATA INFILE。

LOAD DATA INFILE 允许用户将数据从文本文件导入到一个 MySQL 表中。它与 MySQL 自带的 CSV 引擎结合使用,非常适合导入以逗号、制表符等固定格式为分隔符的数据文件。

下面是一个基本的 LOAD DATA INFILE 语句的格式:

LOAD DATA INFILE ‘filename’

INTO TABLE table_name

FIELDS TERMINATED BY ‘,’ (fields)

LINES TERMINATED BY ‘\n’;

其中,filename 是数据文件的路径,table_name 是要导入的表名,fields 是 CSV 文件中各字段的列表,用括号括起来,以逗号分隔。

假设我们有一个名为students.txt的文件,它的内容如下:

张三,男,23

李四,女,21

王五,男,25

赵六,女,20

我们要将这个文件的内容导入一个名为students的表中。

我们需要在MySQL中创建students表:

CREATE TABLE students (

name VARCHAR(20),

gender VARCHAR(6),

age INT

);

接下来,我们可以使用以下命令将数据文件导入students表中:

LOAD DATA INFILE ‘students.txt’

INTO TABLE students

FIELDS TERMINATED BY ‘,’

LINES TERMINATED BY ‘\n’;

这个命令将会把students.txt文件中的四行数据导入到students表中。

如果数据文件中存在表中不存在的列名,或者表中存在而数据文件中不存在的列名,MySQL将抛出一个错误。因此,确保文件和表中的列名和顺序完全一致非常重要。

此外,如果我们需要将数据文件导入到一个已经存在的表中,而且这个表中已经有一些数据,也需要小心。LOAD DATA INFILE 语句默认会将新添加的数据追加到表的尾部。如果这些新添加的数据和表中已有的数据存在重复的记录,那么表中将会出现重复的记录。在这种情况下,我们可以使用INSERT IGNORE语句来避免重复导入数据。

INSERT IGNORE语句会尝试将数据插入到表中,但会忽略掉那些出现冲突(例如主键或唯一索引)的数据行,而不是发出错误并停止执行导入操作。

例如,我们可以使用以下命令来将students.txt文件中的数据导入students表中,并尝试忽略其中任何重复的记录:

LOAD DATA INFILE ‘students.txt’

INTO TABLE students

FIELDS TERMINATED BY ‘,’

LINES TERMINATED BY ‘\n’

IGNORE 1 ROWS;

此时,如果students表中已经有一条记录是”张三、男、23″,那么LOAD DATA INFILE命令将忽略文件中的第一行数据”张三、男、23″,而只将剩下的三条数据导入表中。

MySQL通过LOAD DATA INFILE提供了一个简单而实用的方法来批量导入数据。在使用时,我们需要注意文件和表中列的顺序与名称的一致性,并在必要时使用INSERT IGNORE来避免数据冲突。


数据运维技术 » 批量导入数据MySQL实现一次性增加多行记录(mysql一次增加几行)