mysql批量导入/出文本数据

系统 1744 0
      
        语法:



LOAD DATA [LOW_PRIORITY 
      
      | CONCURRENT] [LOCAL] INFILE 'file_name'
      
        



    [REPLACE 
      
      |
      
         IGNORE]



    INTO TABLE tbl_name



    [CHARACTER SET charset_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 LOCAL INFILE 
      
      'C://stu.txt'
      
         INTO TABLE stu;

因为这是一条SQL语句,你同样可以在你的JAVA程序序中用:

st.execute(“LOAD DATA LOCAL INFILE 
      
      'C://stu.txt'
      
         INTO TABLE stu”);

(st表示Statement的一个实例变量,假设数据库连接,st的初使化已经完成)

 

创建stu表:

create table stu_other(id 
      
      
        int
      
       auto_increment primary key,stu_name varchar(50),age 
      
        int
      
      
        );

 

然后创建一个文本文件“stu.txt”,每行包含一个记录,放在C盘的根目录下。默认的字段分隔符是(tab),你可以更改,下面说明。并且以CREATE TABLE语句中列出的列次序给出。对于丢失的值(例如未知的性别,或仍然活着的动物的死亡日期),你可以使用NULL值。为了在你的文本文件中表示这些内容,使用
      
      /
      
        N(反斜线,字母N)。

 

如stu.txt的内容如下:


      
      100001    FLB100001     100001

100002    FLB100002     100002

100003    FLB100003     100003

100004    FLB100004     100004

100005    FLB100005     100005

100006    FLB100006     100006

100007    FLB100007     100007

100008    FLB100008     100008
      
        

…

这里我用的是table分开。

 

要想将文本文件“stu.txt”装载到stu表中,使用这个命令:

mysql
      
      > LOAD DATA LOCAL INFILE 'c://stu.txt'
      
         INTO TABLE stu;

这里没有指定字段分隔符,以及行的终止符,默认情况下是这样的:

字段分隔符:



FIELDS TERMINATED BY 
      
      '/t' ENCLOSED BY '' ESCAPED BY '//'
      
        



其中的
      
      '/t'就表示是字段分隔符为tab键,如果不想更改,那就把FIELDS TERMINATED BY '/t'中的'/t'
      
        改在你自己的分隔符。将执行命令改成这样:



mysql
      
      > LOAD DATA LOCAL INFILE 'c:/stu.txt'
      
         INTO TABLE stu fields terminated by ‘ ‘;

这里我用的是空格。

行终止符:

LINES TERMINATED BY 
      
      '/n' STARTING BY ''
      
        

 

请注意如果用Windows中的编辑器(使用
      
      /r/
      
        n做为行的结束符)创建文件,应使用:

 

mysql
      
      > 
      
        
          
            LOAD DATA (LOCAL) INFILE
          
        
      
       'C://stu.txt'
      
        
          
            
               INTO
            
          
        
         TABLE stu

    
      
      -> 
      
        
          
            LINES TERMINATED BY '/r/n'
          
        
      
      
        
          
            
              ;
            
          
        
        

(在运行OS X的Apple机上,应使用行结束符
      
      '/r'
      
        。)

 


        
          
            
              
                如果你愿意,你能明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。
              
            
          
        
        这对读入文件“stu.txt”的语句已经足够。

 

另外,还可以使用SELECT ... INTO OUTFILE 将数据导入到外部文件中,如下:

select 
      
      * from stu_t into outfile "c://stu_t.txt"
      
        ;

不过,没有按记录自动分行

这样才能够换行:


        
          
            
              select 
            
          
        
      
      * from stu_t 
      
into outfile "c://stu_t.txt"
lines terminated by '/r/n' ;

 

mysql批量导入/出文本数据


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论