【发布时间】:2015-06-15 21:12:11
【问题描述】:
我正在尝试将一些查询结果导出到 CSV 或 TAB 分隔文件。其中一个字段是包含特殊字符的文本块,可能包括单引号和双引号("、')、换行符(\n)和制表符(\t)。
+------+------+--------------------------------------------------------+
| col1 | col2 | text |
+------+------+--------------------------------------------------------+
| 1 | foo | Oh hey why not "this" or t'is |
or a newline while we are at it |
+------+------+--------------------------------------------------------+
这是我正在使用的查询,用\t 而不是, 用于制表符分隔的文件。
SELECT col1, col2, text
FROM mytable
INTO OUTFILE '/tmp/foo.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
这不适用于 CSV 或 TAB 分隔的文件,因为文本字段中的任何逗号、引号或制表符最终会将文本 blob 拆分为任何导出文件中的多行和/或多列。
实际问题:
有什么方法可以在文本字段中转义特殊字符(如 ", ', \t, \n)并写入 CSV 或 TAB 文件,或者在尝试写入文件之前是否需要替换这些字符?
如果这些应该被替换,我会尝试使用REPLACE 函数从this question 中的代码开始,但我更喜欢保留原始文本的东西。
谢谢。
【问题讨论】:
标签: mysql csv export-to-csv