MySQL中load data

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_PRIORITYLOAD DATA语句的执行将会被延迟,直到没有其它的客户端正在读取表。 
        使用LOCAL比让服务器直接访问文件要慢一些,因为文件的内容必须从客户端主机传送到服务器主机。而在另一方面,你不再需要有FILE权限用于装载本地文件。
        REPLACEIGNORE关键词控制对与现有的记录在唯一键值上重复的记录的处理。如果你指定REPLACE,新的记录行将替换有相同唯一键值的现有记录行。如果你指定IGNORE,将跳过与现有的记录行在唯一键值上重复的输入记录行。如果你没有指定任何一个选项,当重复键值出现时,将会发生一个错误,文本文件的剩余部分也将被忽略。
        
如果你使用LOCAL关键词从一个本地文件中读取数据,在此操作过程中,服务器没有办法停止文件的传送,因此缺省的处理方式就好像是IGNORE被指定一样。
        如果你指定一个FIELDS子句,它的子句 (TERMINATED BY[OPTIONALLY] ENCLOSED BYESCAPED BY)也是可选的,不过,你必须至少指定它们中的一个。

        如果你没有指定一个FIELDS子句,缺省的相当于这样写:

        FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'

        如果你没有指定一个LINES子句,缺省的相当于这样写:

    LINES TERMINATED BY '\n'
 PS:为了写FIELDS ESCAPED BY '\\',你必须指定两个反斜线,该值会作为一个反斜线被读入 。


转载于:https://my.oschina.net/u/271341/blog/142954

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值