Mysql 处理回车换行符

       今天遇到一个需求,要从Mysql中查询一部分数据,然后将数据导出为.txt。直接在linux执行命令, mysql -uusername -ppwd -hip -D database -N -e "select jobid , ctmid,coid,cjobname,replace(replace(cjobinfo,CHAR(13),''),CHAR(10),'')  from jobs" > job.txt.

        连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

  mysql -h 110.110.110.110 -uroot -p abcd123

导完后,打开.txt文件,发现本来1行5列的数据出现了2种异常显示:

1)有的cjobinfo内容,那一列,变成了多列;

2)有的cjobinfo内容,那一行,变成了多行。

关于这两种情况,查了下资料,找到原因:

       一列变多列,原因是CSV的列切分是依据英文逗号的,而笔记内容这列可能有的记录是包含一个至多个逗号的,会导致这个列在展示时被分隔;

        一行变多行,发现是笔记内容中有了回车换行,导出来直接被换行了。

所以现在的处理方式是,将这两种影响展示的字符给处理掉。于是在查询的SQL中做些处理:

mysql -uusername -ppwd -hip -D database -N -e "select jobid,ctmid,coid,cjobname,replace(replace(cjobinfo,CHAR(13),''),CHAR(10),'')  from jobs"  >  job.txt.

其中CHAR(10)是换行,CHAR(13)是回车,顺序和换行完再回车一样。现在导出来就正常了。

猜你喜欢

转载自blog.csdn.net/weixin_39330443/article/details/81185347