在 MySQL 中导出包含换行符的列的表

Posted

技术标签:

【中文标题】在 MySQL 中导出包含换行符的列的表【英文标题】:exporting a table in MySQL with columns that have newline characters 【发布时间】:2011-05-31 09:37:31 【问题描述】:

我对 SQL 非常缺乏经验,所以应该有一个简单的解决方案来解决我的问题: 我正在将一个表选择到一个逗号分隔的文件中,并且 TEXT 类型的列有换行符,所以当我尝试将我的 csv 导入 Excel 时,它会在换行符后面的每段文本中创建单独的行。

这是我的查询:

SELECT * FROM `db`.`table` INTO OUTFILE 'c:\\result.txt' FIELDS TERMINATED BY ','
ESCAPED BY '\\' OPTIONALLY ENCLOSED BY '"'  LINES TERMINATED BY '\r\n' ;

然后在 Excel 中,我导入为逗号分隔的文件,这会导致包含换行符文本的列出现问题。

感谢任何帮助!

【问题讨论】:

【参考方案1】:

Novikov 是正确的,但您也可以在导出时转义换行符。

SELECT REPLACE(`fieldname1`,'\n','\\n'),`fieldname2` FROM db.table INTO OUTFILE 'c:/result.txt'  FIELDS TERMINATED BY ',' ESCAPED BY '\\' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

然后,这会将所有换行符替换为文本字符串 '\n' 这可能不是您想要的输出。

直流

【讨论】:

【参考方案2】:

也许只需将所有内容都用双引号括起来。

SELECT * FROM db.table INTO OUTFILE 'c:/result.txt'  FIELDS TERMINATED BY ',' ESCAPED BY '\\' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

【讨论】:

在这种情况下,如果我有一个值为“abc,bcd”的文本字段,则该文本字段将被解析为两个文本字段 abc 和 bcd,因为里面有一个逗号。 引号括起来的字段中的逗号应该被excel忽略。导入 excel 时,请确保将文本限定符设置为“

以上是关于在 MySQL 中导出包含换行符的列的表的主要内容,如果未能解决你的问题,请参考以下文章

怎样把mysql导出表中某一列的内容用逗号隔开?

怎样把mysql导出表中某一列的内容用逗号隔开?

在 BIRT 中导出 Excel 中的表格单元格文本换行

hive导入到clickhouse的几种方式总结

easyui datagrid 列的内容超出所定义的列宽时,自动换行

PHPmyadmin 3.4.9 导出到 CSV 的问题