PostgreSQL:如何在COPY命令输出中避免不需要的字符?

时间:2017-08-26 14:46:20

标签: postgresql csv escaping export-to-csv delimiter

我的PostgreSQL 9.5数据库中有一个数组(文本)(示例行),如下所示:

my_array(text)
1,112,292,19.7

我正在使用Postgres COPY命令将此文本数组导出到这样的自定义文本文件中:

Copy
(
Select
my_array
from
my_table
Order by my_table_id
) to '~my_path/output.str' With DELIMITER ',';

我得到了输出:

1\,112\,292\,19.7\

如何在复制命令输出中避免这些不需要的\

1 个答案:

答案 0 :(得分:2)

  • 如果分隔符字符(在您的情况下为,)出现在字符串中,则会对其进行转义(通常通过为\添加前缀<)
  • 如果您使用其他分隔符(来自,),则,分隔符不必转义。

  • 如果您在输出中引用字符串,则,分隔符不必转义。

-- CREATE TABLE my_table(my_table_id SERIAL PRIMARY KEY, my_array text);
-- INSERT INTO my_table(my_array )VALUES ('1,112,292,19.7') ;

COPY ( SELECT my_array FROM my_table ORDER BY my_table_id)
TO '/tmp/output.str'
WITH CSV DELIMITER ',' QUOTE '"'
        ;