Экранирование кавычек в Polybase с помощью STRING_DELIMITER

У меня есть плоский файл с разделителями вертикальной черты, который я хочу загрузить с помощью Polybase. Строковые столбцы заключаются в двойные кавычки, а если в значении есть двойные кавычки, они удваиваются. Я считаю, что это допустимый формат файла:

 SizeDescription|SizeCode
 "3.5 feet"|"3.5 ft"
 "2.5 inches"|"2.5"""

Если я не укажу STRING_DELIMITER, кавычки появятся в моей таблице, в которую я вставляю. Если я укажу STRING_DELIMITER='"', то он будет правильно работать для первой строки (3,5 фута), но не будет работать во второй строке (2,5 дюйма).

Я делаю что-то неправильно? Или это не поддерживается?


person GregGalloway    schedule 22.09.2015    source источник


Ответы (1)


Поведение правильное. Если вы не укажете кавычку (") в качестве STRING_DELIMITER, синтаксический анализатор разбивает канал, как вы ожидаете. Если вы укажете кавычку (") в качестве STRING_DELIMITER, вы получите 3 столбца для первой строки:

{3,5 фута} {|} {3,5 фута}

И 4 столбца для второго ряда:

{2,5 дюйма} {|} {2,5} {}

Polybase завершится ошибкой из-за несоответствия количества столбцов.

person Matt Usher    schedule 23.09.2015
comment
Мэтт, спасибо, что помог мне понять, как сейчас работает Polybase, и ответил на мой вопрос. К сожалению, я считаю, что это поведение необходимо улучшить, чтобы иметь возможность анализировать этот допустимый формат файла. (Создайте CSV в Excel с символом кавычки в ячейке и посмотрите, как он сохраняется в CSV. Он соответствует моему формату файла выше.) Со всем уважением, я бы назвал такое поведение Polybase ошибкой. Для этого я создал UserVoice: feedback.azure.com/forums/307516-sql-data-warehouse/suggestions/ - person GregGalloway; 23.09.2015