mysql导出数据换行符_将MySQL数据导出到CSV文件时如何保留换行符?

bd96500e110b49cbb3cd949968f18be7.png

I need to export some data from mysql to a csv file. But one of the columns have line breaks and I need to export the data to a csv file saving break lines.

At this moment I am using the following sql query:

select username, description from users into outfile '/tmp/test.csv' FIELDS ESCAPED BY '"' TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

But that sql query doesn't save break lines in the csv file. I am not an expert with MySQL, if someone could help me I'd be grateful

解决方案

You seem to be hitting this bug: https://bugs.mysql.com/bug.php?id=40320

The bug has been reported since 2008. I just tested and found it is still a bug in MySQL 8.0.3.

I can work around the bug this way:

SELECT username, REPLACE(description, '\n', '\\n') FROM users

INTO OUTFILE '/tmp/test.csv' FIELDS ESCAPED BY '"' TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

The file is exported with literal \n text (that is two characters). So when the data is loaded, the replacement must be reversed:

LOAD DATA INFILE '/tmp/test.csv' INTO TABLE users

FIELDS ESCAPED BY '"' TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'

SET description = REPLACE(description, '\\n', '\n');

This is not very graceful, of course, but it's a workaround.

The other option is to write an application to do the export and import, and refrain from using SELECT...INTO OUTFILE or LOAD DATA INFILE.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值