【问题标题】:Vertica new-line CR LF replaceVertica 新线 CR LF 替换
【发布时间】:2016-03-28 11:06:15
【问题描述】:

我在 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 字符 - 是否存在类似的内容? 谢谢

【问题讨论】:

    标签: replace newline vertica


    【解决方案1】:
     REGEXP_REPLACE(text, '(?>\r\n|\n|\r)', ' ')
    

    【讨论】:

      【解决方案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)
      

      【讨论】:

      • 您注意到不同了吗? '\r\n' --> E'\r\n'
      猜你喜欢
      • 1970-01-01
      • 2011-06-03
      • 2012-07-05
      • 2016-05-09
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 2019-03-14
      相关资源
      最近更新 更多