Загрузка специального символа через Polybase

Я пытаюсь загрузить файл с разделителями строк с одинарными кавычками, и я могу загрузить данные, за исключением определенных записей для строки, которая содержит формат ниже. Как загрузить приведенные ниже значения с помощью PolyBase в хранилище данных SQL. Любой вклад высоко ценится.

Например:

'Don''t Include'
'1'''
'Can''t'
'VM''s' 

Формат внешнего файла:

CREATE EXTERNAL FILE FORMAT SAMPLE_HEADER
with (format_type=delimitedtext,
format_options(
FIELD_TERMINATOR=',',
STRING_DELIMITER='''',
DATE_FORMAT='yyyy-MM-dd HH:mm:ss',
USE_TYPE_DEFAULT=False)
)
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
757
2

Ответы 2

В этом случае ваш разделитель строк должен быть чем-то отличным от одинарной кавычки.

Я предполагаю, что вы используете файл с разделителями-запятыми. У вас есть несколько вариантов:

  • Сделайте разделитель столбцов отличным от запятой.
  • Сделайте разделитель строк символом, которого нет в ваших данных.
  • Используйте выходной формат, отличный от CSV, например Parquet или Orc.

Если вы собираетесь использовать собственный разделитель, я предлагаю ASCII Decimal (31) или Hex (0x1F), который специально зарезервирован для этой цели.

Если вы собираетесь использовать разделитель строк, вы можете использовать двойные кавычки (но я предполагаю, что это в ваших данных) или выбрать какой-либо другой символ.

Тем не менее, мое следующее предположение состоит в том, что вы столкнетесь с данными со встроенным возвратом каретки, и это вызовет еще один уровень проблемы. По этой причине я предлагаю вам перенести ваши извлечения во что-то другое, кроме CSV, и посмотреть на Parquet или Orc.

Спасибо Рон за ваше предложение. Двойная одинарная кавычка ('') присутствует в файле данных. Я тоже пробовал использовать 0x27, но мне это не помогло. Я использую хранилище BLOB в своем тесте, поэтому я не уверен, смогу ли я преобразовать этот CSV в файлы другого формата. Есть ли способ пропустить, если в файле есть непрерывная двойная одинарная кавычка.

Jo Joseph 07.02.2019 03:12

В настоящее время Polybase в SQLDW не поддерживается обрабатывает управляющий символ в текстовом формате с разделителями. Таким образом, вы не можете загрузить каталог файлов в SQLDW.

Чтобы загрузить файл, вы можете предварительно обработать входной файл. Во время предварительной обработки вы можете сгенерировать другой файл данных либо в двоичном формате (PARQUET или ORC, которые могут быть прочитаны каталогом поли-базой), либо другой файл с разделителями с некоторым специальным разделителем полей (любой символ, который не ожидается в вашем файле данных, например, | или ~). С таким специальным символом нет необходимости использовать экранирование/разделение значений)

Надеюсь, это поможет.

Из документов Azure:

<format_options> ::=  
{  
    FIELD_TERMINATOR = field_terminator  
    | STRING_DELIMITER = string_delimiter 
    | First_Row = integer -- ONLY AVAILABLE SQL DW
    | DATE_FORMAT = datetime_format  
    | USE_TYPE_DEFAULT = { TRUE | FALSE } 
    | Encoding = {'UTF8' | 'UTF16'} 
}

Другие вопросы по теме

Как заставить MSI слота развертывания работать с пользователями внешнего поставщика Azure SQL?
Создать вид в Polybase
Как добавить ограничение внешнего ключа в таблицу A (идентификатор, тип), ссылаясь на одну из двух таблиц: таблицу B (идентификатор, тип) или таблицу C (идентификатор, тип)?
Синхронизация БД Azure: синхронизация нескольких пар узлов и элементов с одной общей базой данных синхронизации
«Ключевое слово не поддерживается: проверка подлинности» при использовании пароля Active Directory против AAD в веб-приложении Azure
Время ожидания SqlBulkCopy в Azure истекло, когда время ожидания отключено
Приложение Spring Boot не получает данные из базы данных после развертывания на tomcat
Azure SQL — как добавить пользователей AD в базы данных пула SQL
Как заполнить звездообразную схему с помощью Azure Datafactory v2
Таблицы не создаются, когда я публикую NET-CORE React & DB в Azure