регулярное выражение для доступа к журналу в улье serde с новой строкой

С помощью служб aws athena я пытаюсь импортировать файл csv, включая данные новой строки

При импорте данных используется формат hive serde.

Если данные такие, (все данные заключены в двойные кавычки. "")

«DataA» | «DataB» | «DataC»
«Data1» | «Data2
с новой строкой» | «Data3»
«Data 가» | «Data2 나» | «Data 나»

тогда как записать регулярные выражения в таблицу DDL ниже?

CREATE EXTERNAL TABLE ssdm_schema.ABCTable_regex (  
  Data_A VARCHAR(100)  
, Data_B VARCHAR(100)  
, Data_C VARCHAR(100)  
) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'  
WITH SERDEPROPERTIES (  
"input.regex" = '?????????'  
) 

Я задаю этот вопрос, имея в виду следующий ответ.

Как обрабатывать в AWS Athena разрывы строк

Спасибо


person Kuem Hyang Park    schedule 04.02.2020    source источник
comment
Я воспроизвел проблему на regex101.com/r/bYF1Zm/1, используя regex101 или аналогичный инструмент. помогает другим увидеть то, что вы уже пробовали.   -  person Freiheit    schedule 04.02.2020
comment
Почти готово, regex101.com/r/bYF1Zm/2 Теперь нужно обработать юникод.   -  person Freiheit    schedule 04.02.2020


Ответы (1)


Решил это. https://regex101.com/r/bYF1Zm/3

"([\w\s\n\r\X]+?)"\|"([\X\w\s\n\r]+?)"\|"([\X\w\s\n\r]+?)" с установленными флагами global и unicode.

Это было сложно сделать по трем причинам:

  1. Разрыв строки в середине данных в строке 2
  2. Пробел в середине данных в строке 2
  3. Юникод

Это регулярное выражение, вероятно, может быть более лаконичным, потому что соответствующий шаблон повторяется.

person Freiheit    schedule 04.02.2020