【问题标题】:PostgreSQL Trimming Leading and Trailing Characters: = and "PostgreSQL 修剪前导和尾随字符:= 和 "
【发布时间】:2016-08-17 13:55:15
【问题描述】:

我正在构建一个使用引用的 CSV 文件的导入工具。但是,CSV 文件中的一些字段是这样报告的:

"=""38000"""

38000 是我需要的数据。我使用的数据集成软件 (Talend 6.11) 已经为我去掉了前导和尾随双引号(因此,“38000”变成了 38000),但我找不到摆脱其他双引号的方法。

所以,基本上,我需要“=”“38000”“”变成“38000”,其中前导“=”被删除,尾随“”被删除。

是否有 TRIM 功能可以为我完成此任务?也许 Talend 中有一种方法可以做到这一点?

【问题讨论】:

    标签: postgresql csv talend data-integration


    【解决方案1】:

    正如另一个答案所述,您可以在 SQL 中执行该操作。或者,您可以在 Talend 中使用 Java、Groovy 等进行。但是,如果有一个现有的 Talend 组件可以完成这项工作,我更喜欢使用它。这会导致更快的开发、可能更少的测试和更容易的维护。话虽如此,重要的是要查看所有可用的组件,以便您了解可用的组件。

    您可以使用 Talend 组件 tReplace 检查要修剪引号和等号的每个输入列。单个 tReplace 组件可以对多个输入列进行搜索和替换操作。如果所有替换都相互关联,我会将它们保存在一个 tReplace 中。当它需要进行不相关的替换时,我可能会将它们放在一个新的 tReplace 中,以便将逻辑操作组织和组合在一起。

    tReplace 
     For a given Input Column 
       search for "=", replace with ""
       search for "\"", replace with ""
    

    【讨论】:

      【解决方案2】:

      类似的东西:

      SELECT format( '"%s"', trim( both '"=' from '"=""38000"""' ) );
      
      -[ RECORD 1 ]---
      format | "38000"
      

      第一个:trim() 函数删除所有 " 和 = 字符。结果只是 38000
      第二:带格式可以加双引号得到如意的结果

      或者,可以使用正则表达式和其他 Postgres 字符串函数。

      查看更多: https://www.postgresql.org/docs/current/static/functions-string.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-23
        • 2011-06-03
        • 1970-01-01
        • 2011-01-16
        • 2014-10-30
        • 2015-08-01
        • 2017-04-22
        • 2014-01-03
        相关资源
        最近更新 更多