在日常工作中经常会遇见导出表中的数据到csv文件的操作,这里就简单总结一下导出的操作。
下面对csv文件的描述是摘录:

据RFC4180文档设置的,该文档全称Common Format and MIME Type for Comma-Separated Values (CSV) Files,其中详细描述了CSV格式,其要点包括:(1)字段之间以逗号分隔,数据行之间以\r\n分隔;(2)字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。

这里关键点,我们导出的数据文件字段之间应该以逗号分隔,数据行之间应该以\r\n分隔;字段的值之间以半角双引号包围,字段值中的双引号以两个双引号表示。
导出表数据的三种方法:

使用select … into outfile的方法

直接在mysql的交互界面使用select命令导出数据到文件。

root@newsdb 09:53:08>select * from t_hk_stock_news where news_time > "2018.12.31 23:59:59" into outfile "/db/test.csv";
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

以上报错需要在配置文件中指定secure_file_priv参数的值,这个值指向一个地址,导出的文件需要写入到对应的地址中。
在不知道设置,默认的情况下,导出文件中字段之间用TAB键隔开,每行记录之间用\n换行符隔开,

root@newsdb 01:44:05>select * from t_hk_stock_news limit 1 into outfile "/db/test1.csv";
Query OK, 1 row affected (0.00 sec)root@newsdb 01:44:10>
[root@test2 db]# head -n2 test1.csv
000028952-c807-11e7-85f5-00163e12520202    1    NOW.838555    hk03337    安东油田服务(03337.HK)就现有优先票据提交换要约及额外发行票据    2017-11-13 07:35:20000000001    -1    阿思达克    \N    \N    \N    2017-11-13 07:35:25    15105293425    \N    \N    1    2f87c2337-d3d1-11e7-95494-0016233e020202    \N

可以看到对于记录中存储的null的值,导出的时候自动换成来\N的值的形式。
在使用select … into outfile导出数据的时候,可以使用如下参数指定其分隔符,以及行与行之间的换行符。

fields terminated by描述字段的分隔符,默认情况下是tab字符(\t)
optionally enclosed by描述的是字段的括起字符。
escaped by描述的转义字符。默认的是反斜杠(backslash:\ )
lines terminated by : 行与行之间的分隔

root@newsdb 01:50:35>select * from t_hk_stock_news limit 3 into outfile "/db/test2.csv" fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by "\r\n";
Query OK, 3 rows affected (0.01 sec)
#数据如下
[root@test2 db]# head test2.csv
"00002752-c807-11e7-85f5-00163e020202",1,"NOW.838555","hk03337","安东油田服务(03337.HK)就现有优先票据提交换要约及额外发行票据","2017-11-13 07:35:25",1,0000000001,-1,"阿思达克","N,"N,"N,"2017-11-13 07:35:25",1510529725,"N,"N,1,"2f87c978-d3d1-11e7-9394-00163e020202","N,"2017-11-28 08:15:06"
"0000327bac35ba504d621e1140f2f775",1,"NOW.909884","hk00700","《瑞信窝轮》腾讯升逾2%撑大市美团续挫,留意腾讯购13570 / 沽15322/美团购14369 /沽14698","2018-11-26 14:07:39",1,0000000001,-1,"阿思达克","N,"N,"N,"2018-11-26 14:07:39",1543212459,"N,"N,1,"ea7916c91c037af7054f775998eda559","N,"2018-11-27 14:35:10"
"0000327bac35ba504d621e1140f2f775",1,"NOW.909884","hk01810","《瑞信窝轮》腾讯升逾2%撑大市美团续挫,留意腾讯购13570 / 沽15322/美团购14369 /沽14698","2018-11-26 14:07:39",1,0000000001,-1,"阿思达克","N,"N,"N,"2018-11-26 14:07:39",1543212459,"N,"N,1,"ea7916c91c037af7054f775998eda559","N,"2018-11-27 14:35:10"
[root@test2 db]#

null值转换成/N的值,不知道为何只用半个双引号,另外这个文件若用excel打开会出现乱码的现象;可以在导出的时候指定字符集。

root@newsdb 01:56:01>select * from t_hk_stock_news limit 3 into outfile "/db/test2.csv" character set gbk fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by "\r\n";
Query OK, 3 rows affected (0.00 sec)

上面加入了指定字符集的语句,但是在excel打开的时候会出现串格的问题,多个字段显示在同一个单元格中,特别数据库中存储的null值,在这里转换为\N值时,会出现多个值显示在一个单元格中的问题。
上面导出的数据并不包含每个字段的名字。

使用mysql命令导出数据

利用mysql的-e参数,可以导出数据,最重要的是我们可以对导出的数据进行正则处理。
如下利用mysql命令导出数据到csv文件,并且把表中的null值在excel中显示为空。

[root@test2 ~]# mysql -e "set names gbk;select * from newsdb.t_hk_stock_news where news_time > '2019-03-31 23:59:59' limit 5" |sed -e  "s/\t/,/g" -e "s/NULL/  /g" -e "s/\n/\r\n/g" > /db/test.csv#在-e参数中实际使用了两条命令,一条是设置字符集,另一条是select语句,通过管道把每一行数据都通过正则来处理。
#正则中把字段之间的TAB键换为“,”,然后把字段值中的null替换为空字符

上面的文件内容如下:【因为字符集的问题所以产生了乱码,但是可以看到每个字段已经导了出来】

[root@test2 db]# head -n5  test.csv
news_id,src_type,src_id,symbol,title,news_time,content_type,news_type,is_valid,origin,author,url,website,create_time,news_t,edit_desc,news_md5,is_repeat,repeat_id,img_url,update_time
009c7c4cdf3878289c25b6f88267cb2b,3,6f8d47cf17c1bbada470ea63bc34eba4,hk01363,א͏»·±£(01363)4Ղ1ɕͣƆ ԭӲδ֪,2019-04-01 00:00:00,5,  ,-1,ׇͨ²ƾ­,  ,  ,  ,2019-04-01 09:55:02,1554048000,  ,  ,1,2c9c348790f944d39d32838b4cff1e87,  ,2019-04-01 21:16:22
0129b1dfb971aafec131f6f92c862aa9,3,d816360899e4f0049eabbac7e7cb54cb,hk01755,т³Ȕh01755)£ºϷ²ِ³Ȕď												

mysql导出数据到csv文件相关推荐

  1. mysql导出数据到txt太慢_分享:mysql导出数据到txt文件

    本节主要内容: mysql导出数据到txt文件 sql语句示例: 复制代码 代码示例: SELECT email FROM xxxxxx where email is not null and ema ...

  2. php导出数据到csv文件,php导出CSV文件代码 PHP导出数据到CSV 如何排版

    如何使用PHP导出csv和excel文件你走后,再也没有一个声音能让我在人海中突然回首张望. 把Excel文件导入mysql: 打开excel文件,可用phpExcel开源的类 或者: 先把excel ...

  3. MySQL导出数据为csv的方法

    MySQL导出数据为csv的方法 将数据库中的数据导出成csv格式的文件 CSV格式,其要点包括: (1)字段之间以逗号分隔,数据行之间以\r\n分隔: (2)字符串以半角双引号包围,字符串本身的双引 ...

  4. sqlplus导出oracle数据,Oracle SQLPlus导出数据到csv文件的方法

    这篇文章主要介绍了Oracle SQLPlus导出数据到csv文件,需要的朋友可以参考下 时不时地我们需要导出一些数据用作备份.查看报表等,如果用Sql Developer导出会非常慢.而用SqlPl ...

  5. oracle导出数据到 csv文件方法整理

    第一种方法,也是我使用的: 我通过这个方法,按照字段筛选数据,并分别导出多个csv文件: (1)首先创建存储一个过程,如下,直接复制粘贴即可 .这个存储过程可以直接使用,因为它是通用的,只需要你传入S ...

  6. mysql 导出csv命令_MySQL 导出数据到csv文件的命令

    1.MySQL导出本地数据库数据到本地文件mysql -A service_db -h your_host -utest -ptestmysqlgt; select * from t_apps whe ...

  7. mysql导出csv 命令_MySQL导出数据到csv文件的命令

    1.MySQL导出本地数据库数据到本地文件mysql -A service_db -h your_host -utest -ptestmysqlgt; select * from t_apps whe ...

  8. MySQL导出数据为csv的方法(亲测),导出数据为各种文件类型

    最方便的还是用工具导出 mysql命令行导出,windows和linux都行,下面以windows为例: 登录mysql 1.查看导出权限 5.0mysql默认是不给导出数据到文件的,8.0有默认导出 ...

  9. mysql导出数据到csv的方式

    注: MYSQL导入数据出现The MySQL server is running with the --secure-file-priv option so it cannot execute th ...

  10. Mysql导出逗号分隔的csv文件

    CleverCode在实际的工作中,经常需要将一些报表,或者日志数据等导出来,如果直接做页面,如果次数也不是很多,需求也不同.所以直接导出csv文件,更加直观. 1 导出csv文件 1.1 语句格式 ...

最新文章

  1. select 在各浏览器中显示option的测试结果分享
  2. java 文件指定位置插入_java 中利用io流将一个文件插入到另一个文件中的指定位置,指定位置...
  3. 旅行商问题动态规划matlab,旅行商问题的解法
  4. Annotation之补充
  5. 数据采集串口通信系统verilog设计和仿真
  6. TreeMap源码分析——深入分析(基于JDK1.6)
  7. hashtable,dictionary 从原理上说说有什么异同,哪个性能高一些
  8. 手机屏坏了怎么把里面存东西取出来_手机又卡了,到底是运行不够还是存储容量不足?1分钟搞懂...
  9. 计算机参观企业心得,走进联想 感悟联想——北航MBA参观联想集团总部
  10. Java Exe生成工具 JSmooth
  11. dll中使用dialogbox_玩游戏丢失dll文件别着急 认识这些就妥了
  12. 博微三维技术篇【七】——生态数据兼容
  13. 6 爬虫 Scrapy 爬取图片 请求传参 核心组件 中间件
  14. 2021-2027全球与中国陶瓷基板白板市场现状及未来发展趋势
  15. php怎么求最小公倍数,最小公倍数算法
  16. 2段代码实现在所有浏览器下显示特殊字体(附字体转换工具)
  17. 国外java、IT技术网站
  18. gif透明背景动画_在找gif制作app?分享一个GIF制作神器,视频、图片通通可以变GIF...
  19. 人生「价值」的三个关键词|《价值》
  20. 【100%通过率】华为OD机试真题 JS 实现【预订酒店】【2023 Q1 | 100分】

热门文章

  1. WiFi模块 driver驱动框架(sdio接口、pcie接口)
  2. U1C3 介绍SketchEngine和Web语料库研究
  3. 35 个非主流数据库
  4. python基础之应用场景
  5. ▶GODOT 101
  6. 用计算机绘制工作表,《计算机操作基础Excel练习题答案.doc
  7. 数据分析项目分析之风控建模!!
  8. E: Unable to locate package mingw32
  9. 《微电子概论》2.1 理论基础
  10. 十道经典javaWeb面试题