小编典典

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

sql

我需要将一些数据从mysql导出到csv文件。但是其中一列有换行符,我需要将数据导出到保存换行符的csv文件中。

目前,我正在使用以下sql查询:

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

但是该sql查询不会将换行符保存在csv文件中。我不是MySQL的专家,如果有人可以帮助我,我将不胜感激


阅读 187

收藏
2021-04-28

共1个答案

小编典典

您似乎正在遇到以下错误:https :
//bugs.mysql.com/bug.php?id=40320自2008年以来就报告了该错误。我刚刚进行了测试,发现它仍然是MySQL
8.0.3中的错误。

我可以通过以下方式解决该错误:

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';

该文件将使用文字\n文本(即两个字符)导出。因此,在加载数据时,必须撤消替换:

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');

当然,这不是很优雅,但这是一种解决方法。

另一种选择是编写一个应用程序来执行导出和导入,并避免使用SELECT...INTO OUTFILELOAD DATA INFILE

2021-04-28