我在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存储中有包含数据的文件。
你知道我遗漏了什么吗?
2条答案
按热度按时间6ovsh4lw1#
在外部表代码中提供位置时,将值更改为“/customerfiles”。这将读取customerfiles文件夹中的所有文件,并将数据提取到外部选项卡中。此外,在创建外部数据源时,还必须正确地提及文件位置。
ncgqoxb02#
您在上面的评论中所说的是正确的:当从外部表访问blob存储时,您需要针对blob存储的凭证。此外,凭证需要使用数据库主密钥进行保护。看看这个链接,它解释得很好。
创建标识时,设置
IDENTITY
以及SECRET
参数。对于blob store,可以设置IDENTITY
不管你想要什么,我总是用user
.你可以找到
SECRET
如果您浏览到您的存储帐户,请访问azure门户。它位于左侧菜单的访问键下:希望这有帮助。