This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-03. For the latest, interactive version please visit https://mariadb.com/kb/.

LOAD DATA INFILE

语法

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [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,...]

描述

LOAD DATA INFILE语句以非常高的效率从文本文件中读取行并插入到表中。导入的文件名必须以字符串格式给定。

LOAD DATA INFILESELECT ... INTO OUTFILE语句的后续操作。

要将表中数据写入到文件中,使用SELECT ... INTO OUTFILE语句。要将文件中的数据读回表中,使用LOAD DATA INFILE语句。这两个语句的 FIELDSLINES子句是相同的。这些子句都是可选的,但如果同时指定了两者,则FIELDS子句必须写在LINES的前面。

load文件的时候,字符集由系统变量character_set_database指定。SET NAMEScharacter_set_client不会影响输入文件的解析。如果输入文件使用的字符集不同于默认值,一般需要使用CHARACTER SET子句指定所使用的字符集。binary字符集意味着不做任何字符集转换。

LOAD DATA INFILE按照字符集来解析文件中的所有字段,无论字段的数据类型是什么。为了能更正确地解析文件内容,必须保证数据写入到文件中的时候使用了正确的字符集。例如,如果使用mysqldump -T或者使用客户端mysql命令发起的SELECT ... INTO OUTFILE语句导出数据,请确保mysqldump或客户端mysql指定了选项--default-character-set

如果使用了关键字LOW_PRIORITY,插入操作将会延迟,直到没有其他客户端读取该表。如果使用了关键字CONCURRENT,这表示LOAD DATA INFILE插入数据的时候将使用并发插入concurrent inserts。这两个关键字不允许同时指定。

注意:目前不能load字符集为ucs2的文件。

系统变量character_set_filesystem决定了解析文件名时使用的字符集。

MariaDB 5.3开始,支持LOAD DATA INFILE时报告进度progress reporting

你还可以使用mysqlimport工具来load数据;它会发送LOAD DATA INFILE语句给服务器。选项--local表示mysqlimport将从客户端主机上读取数据文件。如果客户端和服务端之间的网速不好,可以指定--compress选项压缩数据来获取更高的效率。

如果存储引擎支持ALTER TABLE ... DISABLE KEYS,则在LOAD DATA INFILE执行的时候会自动禁用索引,在数据导入结束后再自动启用索引。

Statements using LOAD DATA INFILE have not been considered safe for statement-based replication since MariaDB 5.5.

LOAD DATA INFILE语句会激活INSERT触发器

如果系统变量local_infile设置为0,则无法执行LOAD DATA LOCAL,即无法加载客户端本地文件。

See Also

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.