0

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

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

天蓝色的源代码如下: tmmdevstorage - container > customerfiles > file1.txt , file2.txt 我怀疑我在引用该位置时遇到了问题。创建外部表时没有错误,从中选择时也没有错误,只是没有数据。Blob 存储中有包含数据的文件。

关于我缺少什么的任何想法?

4

2 回答 2

1

您在上面的评论中所说的内容是正确的:从外部表访问 blob 存储时,您需要针对 blob 存储的凭据。此外,需要使用数据库主密钥来保护凭证。看看这个链接,它解释得很好。

当您创建身份时,您设置IDENTITYSECRET参数。对于 blob 存储,您可以将 设置为IDENTITY您想要的任何字符串,我总是使用user.

SECRET如果您浏览到您的存储帐户,则可以在 Azure 门户中找到。它位于左侧菜单的访问键下:

在此处输入图像描述

希望这可以帮助。

于 2020-01-25T04:38:57.710 回答
0

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

于 2020-01-30T07:53:42.187 回答