0

我想使用 polybase 将 CSV 加载到 Azure SQL 数据仓库中。我创建了一个外部数据源和外部文件格式。由于位置错误,我无法创建外部表。我在下面附上脚本和屏幕截图。请让我知道可以在此处应用哪些适当的代码。

 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
) ;

在此处输入图像描述

4

1 回答 1

2

如果我们猜对了,您希望SampleData.csv从博客存储加载到 Azure SQL 数据仓库。

当我们使用Blob 存储中的 CREDENTIAL 选项创建外部数据源时:

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,既然我们已经设置了容器,只需LOCATION像下面这样直接设置 /folder/filename (如果 '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 文件: 在此处输入图像描述

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
) ;

数据检查

在此处输入图像描述

希望这可以帮助。

于 2020-03-23T02:51:59.767 回答