mysql LOAD DATA INFILE 批量导入文件
在MySQL数据库中,当我们需要将大量数据导入到数据库表中时,使用LOAD DATA INFILE
语句是一种高效且方便的方法。本文将介绍LOAD DATA INFILE
的使用方法,并提供代码示例。
LOAD DATA INFILE
语句的介绍
LOAD DATA INFILE
语句用于将外部文件的数据导入到MySQL数据库表中。它可以从文本文件、CSV文件、TSV文件等导入数据,并将其插入到指定的表中。这个过程通常比逐条插入数据要快得多。
以下是LOAD DATA INFILE
语句的语法:
LOAD DATA INFILE 'file_path'
[REPLACE | IGNORE]
INTO TABLE table_name
[CHARACTER SET charset_name]
FIELDS TERMINATED BY '\t'
[OPTIONALLY] ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE n LINES
(column1, column2, column3, ...)
file_path
:指定要导入的文件路径。REPLACE
:如果导入的数据中存在重复记录,使用该关键字将替换原有的记录。IGNORE
:如果导入的数据中存在重复记录,使用该关键字将忽略导入的记录。table_name
:指定要插入数据的表名。charset_name
:指定字符集名称。FIELDS TERMINATED BY '\t'
:指定字段之间的分隔符,通常是制表符。ENCLOSED BY '"'
:指定字段的引号字符,通常是双引号。LINES TERMINATED BY '\n'
:指定行之间的分隔符,通常是换行符。IGNORE n LINES
:指定要忽略的文件头行数。(column1, column2, column3, ...)
:指定要导入数据的列。
示例
假设我们有一个包含学生信息的CSV文件,文件路径为/path/to/students.csv
,文件内容如下:
"John Doe",20,"male"
"Jane Smith",19,"female"
"Michael Johnson",21,"male"
我们将使用以下表结构来存储学生信息:
CREATE TABLE students (
name VARCHAR(50),
age INT,
gender VARCHAR(10)
);
我们可以使用以下代码将CSV文件中的数据导入到students
表中:
LOAD DATA INFILE '/path/to/students.csv'
INTO TABLE students
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
解析以上代码:
LOAD DATA INFILE '/path/to/students.csv'
:指定要导入的文件路径。INTO TABLE students
:指定要插入数据的表名。FIELDS TERMINATED BY ','
:指定CSV文件中字段之间的分隔符。ENCLOSED BY '"'
:指定CSV文件中字段的引号字符。LINES TERMINATED BY '\n'
:指定行之间的分隔符。IGNORE 1 LINES
:忽略CSV文件中的第一行(表头)。
运行以上代码后,CSV文件中的数据将被插入到students
表中。
使用REPLACE
或IGNORE
在某些情况下,导入的数据可能与表中已有的数据存在重复。在这种情况下,我们可以使用REPLACE
或IGNORE
关键字来处理重复数据。
-
使用
REPLACE
关键字:如果导入的数据与表中的数据存在重复,将替换原有的记录。LOAD DATA INFILE '/path/to/students.csv' REPLACE INTO TABLE students FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
-
使用
IGNORE
关键字:如果导入的数据与表中的数据存在重复,将忽略导入的记录。LOAD DATA INFILE '/path/to/students.csv' IGNORE INTO TABLE students FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
总结
使用LOAD DATA INFILE
语句可以方便地将外部文件中的数据批量