Создание внешних таблиц в Azure SQL Datawarehouse - PullRequest
0 голосов
/ 22 марта 2020

Я хотел загрузить CSV в Azure SQL хранилище данных, используя polybase. Я создал внешний источник данных и внешний формат файла. Я не могу создать внешнюю таблицу из-за ошибки расположения. Я прилагаю сценарий и скриншот ниже. Пожалуйста, дайте мне знать, какой соответствующий код можно применить здесь.

 CREATE EXTERNAL TABLE [dbo].[exttest1]
( [description] [nvarchar](4000) NULL,
    [industry] [nvarchar](4000) NULL,
    [level] [nvarchar](4000) NULL,
    [size] [nvarchar](4000) NULL,
    [line_code] [nvarchar](4000) NULL,
    [value] [nvarchar](4000) NULL )
WITH
(
    LOCATION='store17/test2/SampleData.csv' , --my azure blob storage container
    DATA_SOURCE = ds1 ,
    FILE_FORMAT = FF1 ,
    REJECT_TYPE = VALUE ,
    REJECT_VALUE = 0
) ;

enter image description here

1 Ответ

1 голос
/ 23 марта 2020

Если мы угадаем, вы хотите загрузить SampleData.csv из хранилища блогов в Azure SQL Хранилище данных.

Когда мы создадим внешний источник данных с опцией CREDENTIAL из хранилища BLOB-объектов:

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = HADOOP ]
[ ; ]

Формат значения местоположения должен быть следующим:

LOCATION = 'wasb[s]://<container>@<storage_account>.blob.core.windows.net'

Затем создайте CREATE EXTERNAL TABLE, так как мы установили контейнер, просто нужно установить / folder / имя файла в LOCATION прямо как ниже (если 'store17' - имя контейнера):

CREATE EXTERNAL TABLE [dbo].[exttest1]
( [description] [nvarchar](4000) NULL,
    [industry] [nvarchar](4000) NULL,
    [level] [nvarchar](4000) NULL,
    [size] [nvarchar](4000) NULL,
    [line_code] [nvarchar](4000) NULL,
    [value] [nvarchar](4000) NULL )
WITH
(
    LOCATION='/test2/SampleData.csv' , --/folder/file
    DATA_SOURCE = ds1 ,
    FILE_FORMAT = FF1 ,
    REJECT_TYPE = VALUE ,
    REJECT_VALUE = 0
) ;

Но из вашего второго снимка экрана, почему lLOCATION изменился на /test2/?

Вот Пример полного кода, который я загружаю dbotest.csv в свой ADW, я протестировал и хорошо работает:

CSV-файл: enter image description here

T- SQL код:

CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
  IDENTITY = '****', --Storage account name
  SECRET = '*****' ;--accournt key

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH
  ( LOCATION = 'wasbs://testcontainer@****.blob.core.windows.net/' ,--
    CREDENTIAL = AzureStorageCredential ,
    TYPE = HADOOP 
  ) ;

  --Create external file format
CREATE EXTERNAL FILE FORMAT TextFileFormat
WITH (FORMAT_TYPE = DELIMITEDTEXT,
      FORMAT_OPTIONS(
          FIELD_TERMINATOR = ',',
          STRING_DELIMITER = '"',
          USE_TYPE_DEFAULT = True)
)

---Create external table wiht format
  CREATE EXTERNAL TABLE [dbo].[dbotest]
( [id] int,
  [name] nvarchar(50)
  )
WITH
(
    LOCATION='/csv/dbotest.csv' ,--/folder/filename
    DATA_SOURCE = MyAzureStorage ,
    FILE_FORMAT = TextFileFormat ,
    REJECT_TYPE = VALUE ,
    REJECT_VALUE = 0
) ;

Проверка данных :

enter image description here

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

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