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,...]
Contents
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.
LOAD DATA INFILE
has supported progress reporting since MariaDB 5.3.
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 statement-based replication since MariaDB 5.5.
This statement activates INSERT triggers.
If the local_infile system variable is set to 0
, attempts to perform a LOAD DATA LOCAL
will fail with an error message.