LOAD DATA INFILE
Syntax
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,...]
Description
The LOAD DATA INFILE statement reads rows from a text file into a table at
a very high speed. The file name must be given as a literal string.
LOAD DATA INFILE is the complement of SELECT ... INTO OUTFILE.
To write data from a table to a file, use SELECT ... INTO OUTFILE. To read
the file back into a table, use LOAD DATA INFILE. The syntax of the
FIELDS and LINES clauses is the same for both statements. Both clauses
are optional, but FIELDS must precede LINES if both are specified.
The character set indicated by the character_set_database system variable
is used to interpret the information in the file. SET NAMES and the
setting of character_set_client do not affect interpretation of input. If the contents of the input file use a character set that differs from the
default, it is usually preferable to specify the character set of the file by
using the CHARACTER SET clause, which is available. A character set of
binary specifies "no conversion."
LOAD DATA INFILE interprets all fields in the file as having the same
character set, regardless of the data types of the columns into which field
values are loaded. For proper interpretation of file contents, you must ensure
that it was written with the correct character set. For example, if you write a
data file with mysqldump -T or by issuing a SELECT ... INTO OUTFILE
statement in mysql, be sure to use a
option with --default-character-setmysqldump or mysql so
that output is written in the character set to be used when the file is loaded
with LOAD DATA INFILE.
If the LOW_PRIORITY keyword is used, insertions are delayed until no other clients are reading from the table. The CONCURRENT keyword allows the use of concurrent inserts. These clauses cannot be specified together.
Note: It is currently not possible to load data files that use the ucs2
character set.
The character_set_filesystem system variable controls the interpretation of the file name.
Since MariaDB 5.3 this statement supports progress reporting.
You can also load data files by using the mysqlimport utility; it
operates by sending a LOAD DATA INFILE statement to the server. The
option causes --localmysqlimport to read data files from the
client host. You can specify the option to get better
performance over slow networks if the client and server support the compressed
protocol.--compress
If the storage engine supports ALTER TABLE ... DISABLE KEYS, indexes are automatically disabled during the execution of LOAD DATA INFILE.
Statements using LOAD DATA INFILE have not been considered safe for replication since MariaDB 5.5.6.