日期:2014-05-16  浏览次数:20702 次

mysql load data infile的使用


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 关键字,它将对连接的客户端做出解释:

  • 如果指定了 LOCAL,客户端主机上的客户端组件读取文件并发送到服务器。可以给出文件的完整路径以确定其精确位置。如果给出的是相对路径,则文件名是相对于客户端组件启动时所在的目录。
  • 如果没有指定 LOCAL,文件是位于服务器的主机上,并且直接被服务器读取。

    当从服务器主机定位文件时,服务器使用下列规则:

  • 如果给定完整的路径,服务器使用该路径名。
  • 如果给定一个或多个前置构件的相对路径,服务器以相对服务器的数据目录搜索文件。
  • 如果给定没有前置构件的文件名,服务器从当前数据库的数据库目录搜寻文件。
?LOAD DA<wbr>TA INFILE 语法 - 小强 - wwq101693的博客注意:
?这些规则意味着,一个以 '/gsfile.txt' 给出的文件是从服务器的数据目录中读取的,然而,以 `gsfile.txt' 给出的一个文件是从当前数据库的数据目录下读取的。举例来说,下面的 LOAD DATA 语句从 db1 数据库目录下读取文件 'data.txt',因为 db1 是当前数据库,即使语句明确把文件载入到db2数据库中的表里,也会从 db1 目录中读取:


友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:853人  网站在4时58分46秒内访问总人数:70978人 当前 43.31%  粤ICP备18100884号-2