Как решить проблему специальных символов в хранилище данных SQL Server - PullRequest
0 голосов
/ 17 апреля 2019

Мне нужно загрузить данные из datalake в хранилище данных SQL Server, используя таблицы polybase. Я создал настройку для создания внешних таблиц. Я создал внешние таблицы и пытаюсь создать таблицу select * from ext_t1, но получаю ???? для столбца в ext_table.

Ниже приведен сценарий моей внешней таблицы. Я обнаружил проблему со специальным символом в данных. Как мы можем избежать специального символа и нужно использовать только тип данных varchar, а не nvarchar. Кто-нибудь может мне помочь в этом вопросе?

CREATE EXTERNAL FILE FORMAT [CSVFileFormat_Test] WITH (FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS (FIELD_TERMINATOR = N',', STRING_DELIMITER = N'"',DATE_FORMAT='yyyy-MM-dd', FIRST_ROW = 2, USE_TYPE_DEFAULT = True,Encoding='UTF8'))

CREATE EXTERNAL TABLE [dbo].[EXT_TEST1]
( A VARCHAR(10),B VARCHAR(20)) 
(DATA_SOURCE = [Azure_Datalake],LOCATION = N'/A/Test_CSV/',FILE_FORMAT =csvfileformat,REJECT_TYPE = VALUE,REJECT_VALUE = 1)

Данные: (специальный символ в csv для столбца A следующим образом)

ÐК Ð’ÐЗМ Завод
ÐК Ð’ÐЗМ ЗаÑтройщик

1 Ответ

0 голосов
/ 23 апреля 2019

Это проблема несоответствия данных, и это чтение может вам помочь.

Рекомендации по внешней таблице

Создать внешнюю таблицу легко, но есть некоторые нюансы, которые необходимо обсудить.

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

Параметры REJECT_TYPE и REJECT_VALUE позволяют вам определить, сколько строк или какой процент данных должны присутствовать в финальной таблице. Во время загрузки, если значение отклонения достигнуто, загрузка не выполняется. Наиболее распространенной причиной отклоненных строк является несоответствие определения схемы. Например, если столбцу неправильно задана схема типа int, когда данные в файле являются строкой, каждая строка не сможет загрузиться.

Data Lake Storage Gen1 использует управление доступом на основе ролей (RBAC) для управления доступом к данным. Это означает, что у участника службы должны быть права на чтение каталогов, определенных в параметре location, и дочерних элементов конечного каталога и файлов. Это позволяет PolyBase аутентифицировать и загружать эти данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...