LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE table_name
[FIELDS
[TERMINATED BY '\t']
[[OPTIONALLY]
ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES TERMINATED BY '\n']
[IGNORE number LINES]
[(col_name1,col_name2,...)]
LOAD DATA INFILE语句以非常高的速度从一个文本文件中读取记录行并插入到一个表中。如果LOCAL关键词被指定,文件从客户端主机读取。如果LOCAL没有被指定,文件必须位于服务器上。由于安全性的原因,当读取位于服务器端的文本文件时,文件必须处于数据库目录或可被所有人读取的地方。同时,为了对服务器端的文件使用LOAD DATA INFILE,你必须在服务器主机上有FILE权限。只有当你没有以--local-infile=0选项启动mysqld,或你没有禁止你的客户端程序支持LOCAL的情况下,LOCAL才会工作。如果你指定关键词LOW_PRIORITY,LOAD DATA语句的执行将会被延迟,直到没有其它的客户端正在读取表。
使用LOCAL比让服务器直接访问文件要慢一些,因为文件的内容必须从客户端主机传送到服务器主机。而在另一方面,你不再需要有FILE权限用于装载本地文件。
REPLACE和IGNORE关键词控制对与现有的记录在唯一键值上重复的记录的处理。如果你指定REPLACE,新的记录行将替换有相同唯一键值的现有记录行。如果你指定IGNORE,将跳过与现有的记录行在唯一键值上重复的输入记录行。如果你没有指定任何一个选项,当重复键值出现时,将会发生一个错误,文本文件的剩余部分也将被忽略。
如果你使用LOCAL关键词从一个本地文件中读取数据,在此操作过程中,服务器没有办法停止文件的传送,因此缺省的处理方式就好像是IGNORE被指定一样。
如果你指定一个FIELDS子句,它的子句 (TERMINATED BY、[OPTIONALLY] ENCLOSED BY和ESCAPED BY)也是可选的,不过,你必须至少指定它们中的一个。
PS:为了写FIELDS ESCAPED BY '\\',你必须指定两个反斜线,该值会作为一个反斜线被读入 。
INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE table_name
[FIELDS
[TERMINATED BY '\t']
[[OPTIONALLY]
ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES TERMINATED BY '\n']
[IGNORE number LINES]
[(col_name1,col_name2,...)]
LOAD DATA INFILE语句以非常高的速度从一个文本文件中读取记录行并插入到一个表中。如果LOCAL关键词被指定,文件从客户端主机读取。如果LOCAL没有被指定,文件必须位于服务器上。由于安全性的原因,当读取位于服务器端的文本文件时,文件必须处于数据库目录或可被所有人读取的地方。同时,为了对服务器端的文件使用LOAD DATA INFILE,你必须在服务器主机上有FILE权限。只有当你没有以--local-infile=0选项启动mysqld,或你没有禁止你的客户端程序支持LOCAL的情况下,LOCAL才会工作。如果你指定关键词LOW_PRIORITY,LOAD DATA语句的执行将会被延迟,直到没有其它的客户端正在读取表。
使用LOCAL比让服务器直接访问文件要慢一些,因为文件的内容必须从客户端主机传送到服务器主机。而在另一方面,你不再需要有FILE权限用于装载本地文件。
REPLACE和IGNORE关键词控制对与现有的记录在唯一键值上重复的记录的处理。如果你指定REPLACE,新的记录行将替换有相同唯一键值的现有记录行。如果你指定IGNORE,将跳过与现有的记录行在唯一键值上重复的输入记录行。如果你没有指定任何一个选项,当重复键值出现时,将会发生一个错误,文本文件的剩余部分也将被忽略。
如果你使用LOCAL关键词从一个本地文件中读取数据,在此操作过程中,服务器没有办法停止文件的传送,因此缺省的处理方式就好像是IGNORE被指定一样。
如果你指定一个FIELDS子句,它的子句 (TERMINATED BY、[OPTIONALLY] ENCLOSED BY和ESCAPED BY)也是可选的,不过,你必须至少指定它们中的一个。
如果你没有指定一个FIELDS子句,缺省的相当于这样写:
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'如果你没有指定一个LINES子句,缺省的相当于这样写:
LINES TERMINATED BY '\n'PS:为了写FIELDS ESCAPED BY '\\',你必须指定两个反斜线,该值会作为一个反斜线被读入 。