将 MySQL 数据导出到 CSV 文件时如何保留换行符?
How to preserve line breaks when exporting MySQL data to a CSV file?
我需要将一些数据从 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 方面的专家,如果有人能帮助我,我将不胜感激
您似乎遇到了这个错误: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 OUTFILE
或 LOAD DATA INFILE
。
我需要将一些数据从 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 方面的专家,如果有人能帮助我,我将不胜感激
您似乎遇到了这个错误: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 OUTFILE
或 LOAD DATA INFILE
。