LOAD DATA INFILE 是 MySQL 中用于从文本文件高速导入数据到数据库表中的一个命令。以下是关于如何使用 LOAD DATA INFILE 的详细说明:
语法
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name=expr,...)]参数说明
LOW_PRIORITY和CONCURRENT:这两个选项用于控制导入数据的优先级。LOW_PRIORITY使得导入操作在后台执行,而CONCURRENT允许其他用户访问被导入的表。LOCAL:指定数据文件是客户端本地的,而不是服务器上的。REPLACE和IGNORE:如果表中有与导入数据冲突的记录,REPLACE会替换这些记录,而IGNORE会忽略它们。tbl_name:要导入数据的表名。CHARACTER SET charset_name:指定字符集。FIELDS:定义字段的属性,如字段的分隔符、封闭符和转义符。LINES:定义行的属性,如行的起始符和终止符。IGNORE number LINES:忽略文件开头的指定行数。(col_name_or_user_var,...):指定要导入的列。SET col_name=expr,...:设置列的值为表达式。
示例
假设我们有一个名为 students.txt 的文本文件,内容如下:
John,Doe,20
Jane,Smith,19
Michael,Johnson,21
John,Doe,20
Jane,Smith,19
Michael,Johnson,21我们想要将这个文件导入到一个名为 students 的表中,该表有三个字段:first_name、last_name 和 age。
首先,创建表:
CREATE TABLE students (
first_name VARCHAR(50),
last_name VARCHAR(50),
age INT
);然后,使用 LOAD DATA INFILE 导入数据:
LOAD DATA LOCAL INFILE 'students.txt'
INTO TABLE students
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;在这个例子中,我们使用了 LOCAL 选项,这意味着文件 students.txt 位于客户端本地。FIELDS TERMINATED BY ',' 表示字段之间以逗号分隔,ENCLOSED BY '"' 表示字段可能被双引号封闭(尽管在这个例子中它们没有被封闭),LINES TERMINATED BY '\n' 表示每行以换行符结束,而 IGNORE 1 ROWS 则是为了忽略文件的第一行(通常是标题行)。
注意:在实际使用时,可能需要根据具体情况调整这些参数,以确保正确地导入数据。
最后,由于安全原因,LOAD DATA LOCAL INFILE 在某些 MySQL 配置中可能是禁用的。如果你在使用时遇到权限问题,请检查 MySQL 服务器的配置。










