Как извлечь файл с столбцом varbinary в скрипте u-sql с помощью экстрактора по умолчанию?

Мне нужно извлечь столбец varbinary в файл. Когда я пытался извлечь его с помощью byte []. Он показывает ошибку «Ошибка преобразования. Столбец с недопустимыми символами».

Скрипт U-SQL:

EXTRACT Id int?, Createddate DateTime?, Photo byte [] FROM @input ИСПОЛЬЗУЯ Extractors.Csv (цитата: true, nullEscape: "\ N");


person Arron    schedule 01.09.2017    source источник


Ответы (1)


Встроенные экстракторы Csv / Tsv / Text предполагают, что они работают с текстовыми данными, где двоичное содержимое закодировано в шестнадцатеричном формате. Это необходимо, поскольку в противном случае двоичный файл мог бы содержать любой из символов разграничения. См. https://msdn.microsoft.com/en-us/library/azure/mt621366.aspx в байтах [].

Поэтому, если ваша фотография не закодирована в шестнадцатеричном формате, вам придется написать свой собственный экстрактор.

person Michael Rys    schedule 01.09.2017
comment
Привет, Майкл Рис! Не могли бы вы дать образец или ссылку на специальный экстрактор для использования byte [] для столбца varchar. Так что это поможет мне. Заранее спасибо! - person Arron; 04.09.2017
comment
Я не знаю, как обрабатывать шестнадцатеричное значение столбца в u-sql - person Arron; 04.09.2017
comment
И я хочу сохранить тот же формат в файле озера данных. - person Arron; 04.09.2017
comment
У меня сейчас нет специального экстрактора, который обрабатывает двоичные данные в другом CSV-файле. Здесь есть пример экстрактора, который работает с изображениями JPEG: github.com/Azure/usql/blob/master/Examples/ImageApp/Image/. Если это по-прежнему не помогает, пришлите мне образец файла и то, что вы хотели бы получить. Кроме того, если вам нужно записать данные набора строк обратно без шестнадцатеричного кодирования, вам понадобится настраиваемое средство вывода (некоторые образцы средств вывода также находятся в репозитории GitHub). - person Michael Rys; 05.09.2017
comment
У меня уже есть данные sql в виде файла в Data Lake. Оттуда я хочу извлечь и выполнить некоторую фильтрацию с помощью u-sql, и это будет помещено в другую папку. - person Arron; 05.09.2017
comment
У меня есть столбец varbinary вместе с другими столбцами, поэтому я не знаю, как использовать настраиваемый экстрактор для извлечения всех значений столбца в строке. - person Arron; 05.09.2017
comment
Как вы гарантируете, что разделение столбцов не будет отображаться внутри двоичного значения? Если вы предоставите мне образец входного файла, мы, вероятно, сможем сгенерировать экстрактор. Вы можете связаться со мной по адресу usql на сайте microsoft dot com. - person Michael Rys; 05.09.2017
comment
Я преобразовал столбец varbinary в тип данных varchar при извлечении из SQL с помощью SELECT CONVERT (varchar (5000), varbinarycolumn, 1). - person Arron; 06.09.2017
comment
Насколько я помню, CONVERT не выполняет шестнадцатеричное кодирование в TSQL. Таким образом, внутри строки может появиться любой из разделителей столбцов или строк. Вы заставили его работать? - person Michael Rys; 05.10.2017