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