2017-08-26 97 views
1

我在我的PostgreSQL 9.5数据库有一个阵列(文本)(样本行)像如下:PostgreSQL:如何避免COPY命令输出中不需要的字符?

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\ 

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

+0

你可以选择另一个分隔符(';'或'\ t') – wildplasser

+0

呀。有效!但我有其他两列(数字)需要与此数组一起导出。因此,我更喜欢COMMA作为分隔符。 –

+0

您可以尝试添加'''的QUOTE“'”和/或force_quote(my_array) – wildplasser

回答

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 '"' 
     ;