Побег всех специальных символов в Presto - PullRequest
0 голосов
/ 11 февраля 2019

Загрузка данных (CSV) в S3, а затем в Presto .Но из-за проблем с данными внутри файлов у нас возникают проблемы с загрузкой из S3 в Presto.Метаданные сформированы правильно, но из-за проблем в столбце B они терпят неудачу.

A; B; ДАТА

EPA; Ørsted Energy Sales & Distribution; 2019-01-11 12: 10: 13

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

EPA; Scan Convert 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 голосов
/ 07 апреля 2019

Проблема в том, что в соответствии со стандартом, если ваш столбец B может содержать разделитель, вы должны добавить цитату к этому столбцу.Если внутри есть кавычки (что может произойти на 99%), то вам следует добавить escape-символ раньше.

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/

...