MySQL中导入 导出CSV

原创 2015年11月18日 10:21:46

MySQL中导出CSV格式数据的SQL语句样本如下:

Sql代码  收藏代码
  1. select * from test_info   
  2. into outfile '/tmp/test.csv'   
  3. fields terminated by ',' optionally enclosed by '"' escaped by '"'   
  4. lines terminated by '\r\n';   
  1. select * from test_info   
  2. into outfile '/tmp/test.csv'   
  3. fields terminated by ',' optionally enclosed by '"' escaped by '"'   
  4. lines terminated by '\r\n';   

MySQL中导入CSV格式数据的SQL语句样本如下:

Sql代码  收藏代码
  1. load data infile '/tmp/test.csv'   
  2. into table test_info    
  3. fields terminated by ','  optionally enclosed by '"' escaped by '"'   
  4. lines terminated by '\r\n';   
  1. load data infile '/tmp/test.csv'   
  2. into table test_info    
  3. fields terminated by ','  optionally enclosed by '"' escaped by '"'   
  4. lines terminated by '\r\n';   

里面最关键的部分就是格式参数

Sql代码  收藏代码
  1. fields terminated by ',' optionally enclosed by '"' escaped by '"'   
  2. lines terminated by '\r\n'   
  1. fields terminated by ',' optionally enclosed by '"' escaped by '"'   
  2. lines terminated by '\r\n'   

这个参数是根据RFC4180文档设置的,该文档全称Common Format and MIME Type for Comma-Separated Values (CSV) Files,其中详细描述了CSV格式,其要点包括:

(1)字段之间以逗号分隔,数据行之间以\r\n分隔;

(2)字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。

 

文件:test_csv.sql

Sql代码  收藏代码
  1. use test;  
  2.   
  3. create table test_info (  
  4.     id  integer not null,  
  5.     content varchar(64) not null,  
  6.     primary key (id)  
  7. );  
  8.   
  9. delete from test_info;  
  10.   
  11. insert into test_info values (2010, 'hello, line  
  12. suped  
  13. seped  
  14. "  
  15. end'  
  16. );  
  17.   
  18. select * from test_info;  
  19.   
  20. select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';  
  21.   
  22. delete from test_info;  
  23.   
  24. load data infile '/tmp/test.csv' into table test_info  fields terminated by ','  optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';  
  25.   
  26. select * from test_info;  
  27.   
  28.    
  1. use test;  
  2.   
  3. create table test_info (  
  4.     id  integer not null,  
  5.     content varchar(64) not null,  
  6.     primary key (id)  
  7. );  
  8.   
  9. delete from test_info;  
  10.   
  11. insert into test_info values (2010, 'hello, line  
  12. suped  
  13. seped  
  14. "  
  15. end'  
  16. );  
  17.   
  18. select * from test_info;  
  19.   
  20. select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';  
  21.   
  22. delete from test_info;  
  23.   
  24. load data infile '/tmp/test.csv' into table test_info  fields terminated by ','  optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';  
  25.   
  26. select * from test_info;  
  27.   
  28.    

 

文件:test.csv

Text代码  收藏代码
  1. 2010,"hello, line  
  2. suped  
  3. seped  
  4. ""  
  5. end"  
[Text] view plaincopy
  1. 2010,"hello, line  
  2. suped  
  3. seped  
  4. ""  
  5. end"  

 

在Linux下如果经常要进行这样的导入导出操作,当然最好与Shell脚本结合起来,为了避免每次都要写格式参数,可以把这个串保存在变量中,如下所示:(文件mysql.sh)

Bash代码  收藏代码
  1. #!/bin/sh  
  2.   
  3.   
  4. # Copyright (c) 2010 codingstandards. All rights reserved.  
  5. # file: mysql.sh  
  6. # description: Bash中操作MySQL数据库  
  7. # license: LGPL  
  8. # author: codingstandards  
  9. # email: codingstandards@gmail.com  
  10. # version: 1.0  
  11. # date: 2010.02.28  
  12.   
  13.   
  14. # MySQL中导入导出数据时,使用CSV格式时的命令行参数  
  15. # 在导出数据时使用:select ... from ... [where ...] into outfile '/tmp/data.csv' $MYSQL_CSV_FORMAT;  
  16. # 在导入数据时使用:load data infile '/tmp/data.csv' into table ... $MYSQL_CSV_FORMAT;  
  17. # CSV标准文档:RFC 4180  
  18. MYSQL_CSV_FORMAT="fields terminated by ',' optionally enclosed by '\"' escaped by '\"' lines terminated by '\r\n'"  
 

使用示例如下:(文件test_mysql_csv.sh)

Bash代码  收藏代码
  1. #!/bin/sh  
  2.   
  3. . /opt/shtools/commons/mysql.sh  
  4.   
  5. # MYSQL_CSV_FORMAT="fields terminated by ',' optionally enclosed by '\"' escaped by '\"' lines terminated by '\r\n'"  
  6. echo "MYSQL_CSV_FORMAT=$MYSQL_CSV_FORMAT"  
  7.   
  8. rm /tmp/test.csv  
  9.   
  10. mysql -p --default-character-set=gbk -t --verbose test <<EOF  
  11.   
  12. use test;  
  13.   
  14. create table if not exists test_info (  
  15.     id  integer not null,  
  16.     content varchar(64) not null,  
  17.     primary key (id)  
  18. );  
  19.   
  20. delete from test_info;  
  21.   
  22. insert into test_info values (2010, 'hello, line  
  23. suped  
  24. seped  
  25. "  
  26. end'  
  27. );  
  28.   
  29. select * from test_info;  
  30.   
  31. -- select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';  
  32. select * from test_info into outfile '/tmp/test.csv' $MYSQL_CSV_FORMAT;  
  33.   
  34. delete from test_info;  
  35.   
  36. -- load data infile '/tmp/test.csv' into table test_info fields terminated by ','  optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';  
  37. load data infile '/tmp/test.csv' into table test_info $MYSQL_CSV_FORMAT;  
  38.   
  39. select * from test_info;  
  40.   
  41.   
  42. EOF  
  43.   
  44. echo "===== content in /tmp/test.csv ====="  
  45. cat /tmp/test.csv  
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

mysql导入导出csv文件

问题:为什么要导入导出为csv文件呢? (1)所谓大数据处理,仅仅关心某些列的数据,而非整个表结构,这些数据就需要保存为csv通用的存储格式,不仅可以在widows下作为文本文件进行处理;也可以...
  • u010700335
  • u010700335
  • 2014年11月03日 11:06
  • 3146

mysql SQLyog导入导出csv文件,解决编码问题

1.选择数据库表 --> 右击属性 --> 备份/导出 --> 导出表数据作为 --> 选择cvs --> 选择下面的“更改” --> 字段 --> 变量长度 --> 字段被终止 -->输入逗号,(这...
  • zhlelva
  • zhlelva
  • 2017年03月22日 14:18
  • 1248

Mysql 导入导出csv 中文乱码问题的解决方法

导出csv: select t1.stid,t1.cateNodeId,t2.name,t1.name from (select p.stid,p.cateNodeId,r.name from R...
  • jueshengtianya
  • jueshengtianya
  • 2014年03月27日 17:15
  • 1297

mysql导出,导入csv文件 多出空记录

1,导出表table_a的数据为CSV文件a.csv windows下的情况: select * from table_a   into outfile '/tmp...
  • xfcy1990
  • xfcy1990
  • 2016年05月18日 23:27
  • 573

MySQL Workbench导出csv格式文件打开后发现数据乱码解决方法

朋友问:他在workbench查询窗口里面select 2000多条记录,然后保存成tickets.csv,打开里面的英文字母是OK的,但是中文字幕乱码了。 我在这边试了下,确实有这个问题,...
  • cuker919
  • cuker919
  • 2015年06月09日 11:28
  • 4810

利用mysql Workbench图形化工具管理mysql,导入与导出数据

下面介绍一款mysql的管理工具,mysql workbench 这个工具可以再mysql的官方网站上下载到。mysql.com 在这里右击 Local MySQL 选择 manage inst...
  • David_xtd
  • David_xtd
  • 2014年01月06日 09:01
  • 14265

csv 文件导入 MySQL 遇到的转义字符问题

csv 文件导入 MySQL 遇到的转义字符问题提示 "invalid utf8 character string" 实为文本数据中默认转义字符造成的问题。...
  • qwerty26256
  • qwerty26256
  • 2016年11月12日 16:05
  • 886

解决从mysql表中多列导出数据到csv合并成一列的问题

下面两句SQL执行后,会发现表中多列在excel中合并成了一列,因为在excel中默认用逗号,作为分隔符。 FIELDS TERMINATED BY ','; 需要加上这一句代码才可以按照表数据的列...
  • weixin_38120348
  • weixin_38120348
  • 2017年10月22日 15:26
  • 123

将mysql数据导为csv再导入到mongodb中

shell脚本 mysql2mongodb.sh #[root@localhost tmp]# vim mysql2mongo.sh mysql -h127.0.0.1 -uroot -p1...
  • c_enhui
  • c_enhui
  • 2016年08月27日 01:26
  • 768

使用Navicat for MySql导入.CSV文件

1、创建一个数据库,右键点击表,选择导入向导。 2、选择导入的数据文件格式,下一步。 3、选择你的.csv文件,注意编码格式,要与你的文件编码格式一样,不然出现乱码...
  • yan943789510
  • yan943789510
  • 2015年03月11日 11:19
  • 14507
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL中导入 导出CSV
举报原因:
原因补充:

(最多只允许输入30个字)