我在vertica中有一个列,我想导出到.csv。 问题是此列中间有CRLF,这意味着导出将每行读取为两行。输入示例(EOF分隔符是从Vertica复制粘贴的):
First part
Second part
我尝试了REPLACE选项,但它没有替换序列。
select TABLE, REPLACE(column_name, '\r\n', 'FUFU') from DB;
该命令会替换随机字母。
因此我开始质疑是否有CRLF(Notepad ++找到它)或者是否隐藏了其他一些我无法替换的角色......
有关新行的其他可能原因的任何帮助(我试过\ n,\ c,\ r和任何可能的组合...)或如何在记事本中直接看到它(直接在Vertica中?)将非常感谢...
或者,我发现无法在Vertica中明确定义导出时的EOF字符 - 这样的事情是否存在? 感谢
答案 0 :(得分: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)
答案 1 :(得分:0)
REGEXP_REPLACE(text, '(?>\r\n|\n|\r)', ' ')