SELECT * FROM server_warning_repaired into outfile '/tmp/test.csv' CHARACTER SET gbk fields terminated by ',' optionally enclosed by '\"';
总体来看,select语句+into outfile+ ‘文件路径’+ 文件参数mysql
功能:导出数据到服务器本地路径下的test.csv文件,sql
CHARACTER SET gbk 解决导出文件中文乱码问题数据库
相关参数:服务器
· FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,能够为单个或多个字符。默认值是“\t”。编辑器
· FIELDS ENCLOSED BY '字符':设置字符来括住字段的值,只能为单个字符。默认状况下不使用任何符号。spa
· FIELDS OPTIONALLY ENCLOSED BY '字符':设置字符来括住CHAR、VARCHAR和TEXT等字符型字段。默认状况下不使用任何符号。code
· FIELDS ESCAPED BY '字符':设置转义字符,只能为单个字符。默认值为“\”。server
· LINES STARTING BY '字符串':设置每行数据开头的字符,能够为单个或多个字符。默认状况下不使用任何字符。ip
· LINES TERMINATED BY '字符串':设置每行数据结尾的字符,能够为单个或多个字符。默认值是“\n”。字符串
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 -uusername -ppassword -h 172.16.81.236 –D 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进行相应的转化,最终解决了问题,但愿对须要的人有所帮助。