将数据(CSV)上载到 S3,然后再上载到Presto 。但是由于文件中数据的问题,我们无法从S3上传到Presto。 元数据格式正确,但是由于B列中的问题,因此失败了。
A; B; DATE
EPA;Ørsted能源销售与分销; 2019-01-11 12:10:13
EPA; De MARIAGærfaPepeerA / 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)中添加替换公式,以添加\并正确读取值。 是否有我们应该寻找并添加\的字符列表?
答案 0 :(得分:0)
问题是根据标准,如果您的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