加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

导出mysql的数据为csv格式的文件

(2016-11-29 11:48:58)
标签:

it

分类: mysql

Mysql自带数据导出的命令

into outfile(本地导出)

SELECT * FROM server_warning_repaired

into outfile '/tmp/test.csv'

CHARACTER SET gbk                                   

fields terminated by ',' optionally enclosed by '\"';

整体来看,select语句+into outfile+ ‘文件路径’+ 文件参数

功能:导出数据到服务器本地路径下的test.csv文件,

CHARACTER SET gbk            解决导出文件中文乱码问题

相关参数:

·         FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值是“\t”。

·         FIELDS ENCLOSED BY '字符':设置字符来括住字段的值,只能为单个字符。默认情况下不使用任何符号。

·         FIELDS OPTIONALLY ENCLOSED BY '字符':设置字符来括住CHAR、VARCHAR和TEXT等字符型字段。默认情况下不使用任何符号。

·         FIELDS ESCAPED BY '字符':设置转义字符,只能为单个字符。默认值为“\”。

·         LINES STARTING BY '字符串':设置每行数据开头的字符,可以为单个或多个字符。默认情况下不使用任何字符。

·         LINES TERMINATED BY '字符串':设置每行数据结尾的字符,可以为单个或多个字符。默认值是“\n”。

Mysqldump(本地导出)

mysqldump -h 172.16.81.236 -uusername -ppassword -t -T/tmp/waring.csv nms_db server_warning_unrepaired  --fields-enclosed-by=\" --fields-terminated-by=,

 

由于mysqldump的实现方法,其根本还是into outfile,故导出的文件也只能到本地

mysql(远程导出)

mysql -uusername -ppassword -h 172.16.81.236D my_db  --default-character-set=gbk  -e 'select * from server_warning_unrepaired'  | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /tmp/file.csv

注:

-u            mysql用户名 admin

-p              mysql密码itserver

-h              mysql所在终端ip

-D              所选数据库nms_db

--default-character-set=gbk       解决中文显示乱码问题

-e              ‘select语句’

sed                     在线编辑器,通常用来处理行内容,详细的用法网上有很多

在这里会将文件内容转化为我们需要的格式

问题解决

         本次问题,是为了实现远程导出mysql表格数据为csv格式的文件而产生的,最早的解决思路是获取到mysql的数据后,再自行对相关的数据进行格式转化,如数据之间添加逗号,换行添加\n之类的操作,但是该方法的实现需要对所有的数据进行遍历,在数据量较大时,会消耗大量的时间;我在处理5万条数据的数据的时候,就花费了将近5分钟的时间,因此将其舍弃。

         后来发现mysql自带的命令,into outfile,可以按照需要的文件格式进行导出,实现效率很快,但是产生的文件只会导出到mysql所在的终端上,而想要获取该文件,还需要该终端的用户信息,显示是不合理的,因此舍弃.

         最后,使用了mysql和sed结合的方法,将查出的文件内容使用sed进行相应的转化,最终解决了问题,希望对需要的人有所帮助。


(数据导入)

由于工作需要,经常需要将mysql数据库中的数据导出到excel表格,或者需要将excel表格数据导入到mysql数据库,我的方法是先将它们都转换成一种中间数据格式csv(execl数据可以直接导出为csv格式,csv格式也可以直接用excel打开)。下面介绍一下操作步骤:

 

csv导入mysql

 

load data infile 'C:\\Users\\UserName\\Desktop\\test.csv' 

into table `table` 

fields terminated by ',' optionally enclosed by '"' escaped by '"' 

lines terminated by '\n'; 

 

mysql导入csv

 

select * from `table`

load data infile 'C:\\Users\\UserName\\Desktop\\test.csv' 

fields terminated by ',' optionally enclosed by '"' escaped by '"' 

lines terminated by '\n'; 

 

如果乱码,可用相关编辑器打开.csv文件,另存为utf-8的csv

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有