日期:2014-05-16 浏览次数:20702 次
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
???[REPLACE | IGNORE]
??INTO TABLE tbl_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,...]]
LOAD DATA INFILE 语句以很高的速度从一个文本文件中读取行到一个表中。文件名必须是一个文字字符串。
关于 INSERT 与 LOAD DATA INFILE 的效率和提高 LOAD DATA INFILE 速度的更多信息,参考管理员手册中的加速 INSERT 语句 。
系统变量 character_set_database 所指出的字符集被用来解释文件中的信息。SET NAMES 和设置 character_set_client 不会影响输入的解释。
用户也可以使用 import 实用程序装载数据文件;它通过发送一个 LOAD DATA INFILE 命令到服务器来实现。--local 选项使得 import 从客户端主机读取数据文件。如果客户端与服务器支持压缩协议,用户可以指定 --compress 选项,以在较慢的网络中获得更好的性能。参考管理员手册中的 import — 数据导入程序 。
如果用户指定关键词 LOW_PRIORITY,LOAD DATA 语句的执行将会被延迟,直到没有其它的客户端正在读取表。
如果一个 GSSYS 表满足同时插入的条件(即该表在中间有空闲块),并且您对这个 GSSYS 表指定了 CONCURRENT,则当 LOAD DATA 正在执行时,其它线程会从表中重新获取数据。即使没有其它线程在同时使用本表格,使用本选项也会略微影响 LOAD DATA 的性能。
如果指定了 LOCAL 关键字,它将对连接的客户端做出解释:
当从服务器主机定位文件时,服务器使用下列规则:
?注意: |
?这些规则意味着,一个以 '/gsfile.txt' 给出的文件是从服务器的数据目录中读取的,然而,以 `gsfile.txt' 给出的一个文件是从当前数据库的数据目录下读取的。举例来说,下面的 LOAD DATA 语句从 db1 数据库目录下读取文件 'data.txt',因为 db1 是当前数据库,即使语句明确把文件载入到db2数据库中的表里,也会从 db1 目录中读取: |