转义Presto中的所有特殊字符

时间:2019-02-11 11:59:46

标签: amazon-s3 utf-8 presto

将数据(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)中添加替换公式,以添加\并正确读取值。 是否有我们应该寻找并添加\的字符列表?

Data in case text is not clear

1 个答案:

答案 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

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