在sql中使用外部表/polybase从外部源(azure存储blob)选择数据已创建表但未返回数据

5fjcxozz  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(414)

我在azure存储blob上有一个“|”分隔的文件,我正在尝试创建一个外部表来从该数据中进行选择。我一步一步地遵循这里的指示:https://docs.microsoft.com/en-us/sql/t-sql/statements/create-external-table-transact-sql?view=sql-server-ver15 我相信所有的服务器设置都是正确的。我实际上可以创建表,但是当我从中选择(从表下的externaltables部分)时,没有数据返回。下面是我的select语句,为了节省空间,我已经修剪了字段。

CREATE EXTERNAL TABLE [dbo].[customer]
(
    [Id] [int] NOT NULL,
    [CustomerName] [varchar](255) NULL,
    [AccountType] [varchar](255) NULL,
    [State] [varchar](255) NULL,
    [DateExtracted] [date] NULL,
    [tablename][varchar](50) NULL,
    [databaseName] [varchar](50) NULL
)   
WITH (LOCATION='customerfiles/',
      DATA_SOURCE = AzureStorage,  
      FILE_FORMAT = TextFileFormat  
);

azure中的源代码如下:tmmdevstorage-container>customerfiles>file1.txt,file2.txt我怀疑引用位置时出错。创建外部表时没有错误,从中选择时也没有错误,只是没有数据。blob存储中有包含数据的文件。
你知道我遗漏了什么吗?

6ovsh4lw

6ovsh4lw1#

在外部表代码中提供位置时,将值更改为“/customerfiles”。这将读取customerfiles文件夹中的所有文件,并将数据提取到外部选项卡中。此外,在创建外部数据源时,还必须正确地提及文件位置。

ncgqoxb0

ncgqoxb02#

您在上面的评论中所说的是正确的:当从外部表访问blob存储时,您需要针对blob存储的凭证。此外,凭证需要使用数据库主密钥进行保护。看看这个链接,它解释得很好。
创建标识时,设置 IDENTITY 以及 SECRET 参数。对于blob store,可以设置 IDENTITY 不管你想要什么,我总是用 user .
你可以找到 SECRET 如果您浏览到您的存储帐户,请访问azure门户。它位于左侧菜单的访问键下:

希望这有帮助。

相关问题