51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2122|回复: 7
打印 上一主题 下一主题

mysql用load data infile 导入文件数据到表需要注意地方?

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:08
  • 签到天数: 531 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-10-15 10:58:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    mysql用load data infile 导入文件数据到表需要注意地方?

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-3-18 13:27
  • 签到天数: 113 天

    连续签到: 3 天

    [LV.6]测试旅长

    2#
    发表于 2019-10-15 11:51:23 | 只看该作者
    确实有些要注意的地方,先去吃饭,一会回来再告诉你。
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-3-18 13:27
  • 签到天数: 113 天

    连续签到: 3 天

    [LV.6]测试旅长

    3#
    发表于 2019-10-15 12:45:45 | 只看该作者
    首先我们来看看基本的语法:
    load data  [low_priority] [local] infile 'file_name txt' [replace | ignore]
    into table tbl_name
    [fields
    [terminated by't']
    [OPTIONALLY] enclosed by '']
    [escaped by'\' ]]
    [lines terminated by'n']
    [ignore number lines]
    [(col_name,   )]
           load data infile语句从一个文本文件中以很高的速度读入一个表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用load data infile,在服务器主机上你必须有file的权限。
    1  如果你指定关键词low_priority,那么MySQL将会等到没有其他人读这个表的时候,才把插入数据。可以使用如下的命令:load data  low_priority infile "/home/mark/data sql" into table Orders;
    2  如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。
    3  replace和ignore关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。例如:load data  low_priority infile "/home/mark/data sql" replace into table Orders;
    4 分隔符
    (1) fields关键字指定了文件记段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:
                   terminated by分隔符:意思是以什么字符作为分隔符
                   enclosed by字段括起字符
                   escaped by转义字符
                   terminated by描述字段的分隔符,默认情况下是tab字符(\t)
                   enclosed by描述的是字段的括起字符。
                   escaped by描述的转义字符。默认的是反斜杠(backslash:\ )  
    例如:load data infile "/home/mark/Orders txt" replace into table Orders fields terminated by',' enclosed by '"';
    (2)lines 关键字指定了每条记录的分隔符默认为'\n'即为换行符
    如果两个字段都指定了那fields必须在lines之前。如果不指定fields关键字缺省值与如果你这样写的相同: fields terminated by'\t' enclosed by ’ '' ‘ escaped by'\\'。如果你不指定一个lines子句,缺省值与如果你这样写的相同: lines terminated by'\n'
    例如:load data infile "/jiaoben/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';
    5  load data infile 可以按指定的列把文件导入到数据库中。 当我们要把数据的一部分内容导入的时候,,需要加入一些栏目(列/字段/field)到MySQL数据库中,以适应一些额外的需要。比方说,我们要从Access数据库升级到MySQL数据库的时候
    下面的例子显示了如何向指定的栏目(field)中导入数据:
    load data infile "/home/Order txt" into table Orders(Order_Number, Order_Date, Customer_ID);
    6  当在服务器主机上寻找文件时,服务器使用下列规则:
    (1)如果给出一个绝对路径名,服务器使用该路径名。
    (2)如果给出一个有一个或多个前置部件的相对路径名,服务器相对服务器的数据目录搜索文件。  
    (3)如果给出一个没有前置部件的一个文件名,服务器在当前数据库的数据库目录寻找文件。
    例如: /myfile txt”给出的文件是从服务器的数据目录读取,而作为“myfile txt”给出的一个文件是从当前数据库的数据库目录下读取。

    看下吧。写的比我写的全面,就引用别人的了。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:30
  • 签到天数: 2820 天

    连续签到: 2 天

    [LV.Master]测试大本营

    4#
    发表于 2019-10-16 10:15:45 | 只看该作者
    楼上很详细啊
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:35
  • 签到天数: 1808 天

    连续签到: 2 天

    [LV.Master]测试大本营

    5#
    发表于 2019-10-16 10:17:25 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:15
  • 签到天数: 1523 天

    连续签到: 2 天

    [LV.Master]测试大本营

    6#
    发表于 2019-10-16 10:34:12 | 只看该作者
    格式问题
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 16:45
  • 签到天数: 998 天

    连续签到: 2 天

    [LV.10]测试总司令

    7#
    发表于 2019-10-16 13:12:07 | 只看该作者
    顶楼上
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 09:55
  • 签到天数: 367 天

    连续签到: 1 天

    [LV.9]测试副司令

    8#
    发表于 2019-10-16 14:28:22 | 只看该作者
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 01:15 , Processed in 0.068255 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表