码迷,mamicode.com
首页 > 数据库 > 详细

mysql 千万级数据的导入导出

时间:2018-03-01 17:33:17      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:文本文件   tin   ted   行数据   har   cte   span   arc   info   

  最近应公司要求,在做数据库的导入导出。经查询每天的数据量在350W条左右。经过大量测试,感觉以下方法比较好

   数据导出SELECT INTO…OUTFILE

 基本语法:

SELECT  

[INTO OUTFILE ‘file_name‘  

        [CHARACTER SET charset_name]  

        export_options  

      | INTO DUMPFILE ‘file_name‘  

      | INTO var_name [, var_name]]  

该语句分为两个部分。前半部分是一个普通的SELECT语句,通过这个SELECT语句来查询所需要的数据;后半部分是导出数据的。其中,“目标文件”参数指出将查询的记录导出到哪个文件中;“OPTION”参数为可选参数选项,其可能的取值有:

    • FIELDS TERMINATED BY ‘字符串‘:设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值是“\t”。
    • FIELDS ENCLOSED BY ‘字符‘:设置字符来括住字段的值,只能为单个字符。默认情况下不使用任何符号。
    • FIELDS OPTIONALLY ENCLOSED BY ‘字符‘:设置字符来括住CHAR、VARCHAR和TEXT等字符型字段。默认情况下不使用任何符号。
    • FIELDS ESCAPED BY ‘字符‘:设置转义字符,只能为单个字符。默认值为“\”。
    • LINES STARTING BY ‘字符串‘:设置每行数据开头的字符,可以为单个或多个字符。默认情况下不使用任何字符。
    • LINES TERMINATED BY ‘字符串‘:设置每行数据结尾的字符,可以为单个或多个字符。默认值是“\n”。FIELDS和LINES两个子句都是自选的,但是如果两个子句都被指定了,FIELDS必须位于LINES的前面。

例子: 

        SELECT * INTO OUTFILE ‘E:/data.txt‘ FIELDS TERMINATED BY ‘,‘ OPTIONALLY ENCLOSED BY ‘"‘ LINES TERMINATED BY ‘\n‘ FROM dl.datas

        导出结果:

       技术分享图片

 


 

 

     数据导入load data infile

基本语法:
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 low_priority local infile "E:/data.txt" replace into table datas fields terminated by ‘,‘ enclosed by ‘"‘ escaped by ‘"‘ lines terminated by ‘\n‘;

 

 

 

     

mysql 千万级数据的导入导出

标签:文本文件   tin   ted   行数据   har   cte   span   arc   info   

原文地址:https://www.cnblogs.com/yanglovezhi/p/8488309.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!