2017-08-26 98 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 '"' 
     ;