2015-12-22 106 views
2

我在Vertica中有一列,我希望將它導出到.csv。 問題在於此列中間有CRLF,這意味着導出將每行讀取爲兩行。輸入的例子(EOF定界符是拷貝從Vertica的粘貼):Vertica new-line CR LF替換

First part 
Second part 

我試圖REPLACE選項,但它不替換序列。

select TABLE, REPLACE(column_name, '\r\n', 'FUFU') from DB; 

該命令確實取代了隨機字母。

因此,我開始質疑是否有CRLF(記事本++發現),或者如果有一些其他的字符隱藏在那裏,我不能替換...

上有哪些其他可能的原因任何幫助新線(我試過\ n,\ c,\ r和任何可能的組合)或如何在記事本中查看(直接在Vertica中?)將不勝感激......

或者,沒有辦法在Vertica中明確定義導出時的EOF字符 - 是否存在這樣的情況? 謝謝

回答

2

您可能想要檢查如何在Vertica的SQL參考手冊中使用擴展字符串文字

例子:

create table a (id integer , txt varchar(20)) ; 
insert into a values (1 , 'abc') ; 
insert into a values (2 , e'def\r\nrghi') ; 
insert into a values (3 , e'ij\r\nklm') ; 
insert into a values (4 , 'poq') ; 

然後,以取代\ r \ n鏈 - 例如 - 一個空間:

SQL=> select id, replace(txt, e'\r\n', ' ') from a order by id ; 
id | replace 
----+---------- 
    1 | abc 
    2 | def rghi 
    3 | ij klm 
    4 | poq 
(4 rows) 
+0

我覺得OP已經有取代試過了,不是嗎? –

+1

你注意到了區別? '\ r \ n' - > E'\ r \ n' – mauro

+0

對不起,我沒有看到。 –

0
REGEXP_REPLACE(text, '(?>\r\n|\n|\r)', ' ')