当前位置: 首页>数据库>正文

MySQL使用 LOAD DATA INFILE 语句

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


https://www.xamrdz.com/database/6zn1944552.html

相关文章: