gpt4 book ai didi

MySQL 将带有特殊字符的文本字段导出到 outfile

转载 作者:行者123 更新时间:2023-11-29 00:01:35 25 4
gpt4 key购买 nike

我正在尝试将一些查询结果导出到 CSV 或 TAB 分隔文件。其中一个字段是包含特殊字符的文本 blob,可能包括单引号和双引号("')、换行符(\n) 和制表符 (\t)。

+------+------+--------------------------------------------------------+
| col1 | col2 | text |
+------+------+--------------------------------------------------------+
| 1 | foo | Oh hey why not "this" or t'is |
or a newline while we are at it |
+------+------+--------------------------------------------------------+

这是我正在使用的查询,使用 \t 而不是 , 用于 TAB 分隔文件。

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 文件,或者是否需要在尝试之前替换这些字符写入文件?

如果要替换这些,我会尝试从 this question 中的代码开始使用 REPLACE 函数,但我更喜欢保留原始文本的东西。

谢谢。

最佳答案

好吧,我不知道如何转义所有特殊字符,所以这里有一个在有问题的字符上使用 REPLACE 的解决方案:

SELECT col1, col2, 
replace(replace(replace(text, '\n', 'n'), ',', '\,'), '\"', '\'') text
FROM mytable
INTO OUTFILE '/tmp/foo.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';

关于MySQL 将带有特殊字符的文本字段导出到 outfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29556534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com