批量导入数据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来避免数据冲突。