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 服务器的配置。