mysql outfile 空值_如何处理mysql SELECT…OUTFILE语句中的空值以及转义字段? 当前正在截断空值...

我在使用MySQL的SELECT.。。OUTFILE时遇到了一些困难,这些结果集包括空值和需要双引号转义的列(即包含“”字符的列)。这是我使用的OUTFILE语法:INTO OUTFILE '$csv_file'

FIELDS ESCAPED BY '""' TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n'

我的问题是关于按查询的部分转义的字段--如果省略这部分,那么空值将正确导出(。。。,“\n”,。。。就是csv中的样子)。

但是,包含双引号的列将在Excel中被拆分到多行/多列。 这是因为excel要求将列中的'''字符写成''''来转义。

包括FIELDS Escape BY子句修复了excel中包含双引号字符的列的问题,但是,它打破了NULL列。 空列导出为(。。。“n,。。。),列上缺少反斜杠和尾随引号。在excel中,这会导致多列由于缺少结束引号而相互折叠。

我的目标是能够导出包含双引号和换行的列,以及将空列导出为\n,但是我似乎不知道如何做到这一点。 MySQL文档指出,转义的字段会影响空列的输出方式,但我无法理解转义序列“”“”如何导致空列上的反斜杠和尾随引号被删除

目前,我的解决方案是在每行输出给用户时执行字符串替换,方法是使用由转义的字段并将“n,”替换为“\n”,“。这似乎可行,但感觉不太对,我担心这会导致行中出现一些问题

select列上的IFNULL()可能是一个选项,但是我们在代码中使用它的方式实际上很难实现。 对于每个可能具有空值的列,也需要执行此操作,因此如果可以的话,我希望避免使用此解决方案

谢啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值