Azure Data Factory escape-символ и проблема с кавычками - копирование - PullRequest
0 голосов
/ 04 мая 2020

У меня есть конвейеры ADF, экспортирующие (посредством операций копирования) данные из Azure SQL дБ в озеро данных (ADLS2), а затем оттуда в другой Azure SQL дБ. Он работал нормально, пока не появились некоторые символы.

Вот так выглядит запись преступника в первом Azure SQL db: "Gasunie \

введите описание изображения здесь

Вот как набор данных настраивается в ADF для его экспорта в ADLS: Разделитель столбцов - разделитель строк канала - автоопределение Кодировка - По умолчанию (UTF-8) Escape-символ - Backsla sh () Цитата символ - Двойная кавычка (")

введите описание изображения здесь

Вот так выглядит экспортированный файл в notepad ++ (это файл с разделителем каналов):" \ " Gasunie \ " введите описание изображения здесь

Это параметры набора данных adls в ADF при загрузке его из adls в azure sql db: Разделитель столбцов - разделитель строк запятой - автоопределение кодировки - по умолчанию (UTF-8) символ Escape - Backsla sh () символ кавычки - двойная кавычка (")

Обратите внимание, что теперь он разделен запятой, но это не вызывает никаких проблем.

введите описание изображения здесь

Но вот как это выглядит после загрузки: "Gasun ie" | 1 ||||||||||| ... Backsla sh, который был изначально там каким-то образом заставил его остановить разделение для следующих нескольких столбцов. введите описание изображения здесь

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

Кто-нибудь знает, как я могу исправить это без необходимости запрашивать исправление источника?

Примечание: есть причина, по которой он хранится в adls, поэтому он не может быть копией Azure sql db to other Azure Sql db.

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

Любая помощь приветствуется. Спасибо.

1 Ответ

0 голосов
/ 04 мая 2020

Просто предложение, у меня возникла ситуация, когда при копировании данных из azuresql в datalake, возврат каретки и символы новой строки разделяли сохраненный файл csv на adls. Я заменил их в запросе, используя следующий код, и это сработало. replace (REPLACE(Description,CHAR(10),''),char(13),'') Описание

Вы можете попробовать следующее

REPLACE([yourcolumn],char(34),' ')

image1 image2

...