【问题标题】:Escape all special characters in Presto转义 Presto 中的所有特殊字符
【发布时间】:2019-07-04 22:08:57
【问题描述】:

将数据 (CSV) 上传到 S3,然后上传到 Presto。但是由于文件中的数据存在问题,我们在从 S3 上传到 Presto 时遇到了问题。 元数据格式正确,但由于B 列中的问题,它们失败了。

A;B;日期

EPA;Ørsted 能源销售与分销;2019-01-11 12:10:13

EPA;De MARIA GærfaPepeer A/S; 2019-02-12 12:10:13

EPA;扫描转换 A/S; 2019-02-11 11:10:12

EPA;***超级; 2019-02-11 11:10:13

EPA;sAYSlö-SähAAdkö Oy; 2019-02-11 11:11:11

我们在上一步 (Informatica Cloud) 中添加替换公式,以添加 \ 并正确读取值。 是否有我们应该查找并添加 \ 的字符列表?

【问题讨论】:

    标签: amazon-s3 utf-8 presto


    【解决方案1】:

    问题是根据标准,如果您的 B 列可以包含分隔符,那么您应该在该列上添加引号。如果里面有引号(99% 可能发生什么),那么您应该在之前添加转义字符。

    A;B;DATE
    EPA;"company";01/01/2000
    EPA;"Super \"company\""; 01/01/2000 
    EPA,"\"dadad\" \;"; 01/01/2000
    

    我也遇到过类似的问题,用正则表达式很容易解决:

    在你的场景中你可以搜索:

    (^EPA;) 并将其替换为:$1" ==> s/(^EPA;)/$1"/g

    (;[0-9]{1,2}/[0-9]{1,2}) 并将其替换为:"$1 ==> s/\s*(;[0-9]{1,2}/[0-9]{1,2})/"$1/g

    最后一步是丰富全局反斜杠:

    s/([^;"]|;")(")([^;\n])/$1\\$2$3/g
    

    请看一下: https://fullouterjoin.wordpress.com/2019/04/05/dealing-with-broken-csv-strings-with-missing-escape-characters-powercenter/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多