2015-12-22 70 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)', ' ')