sql-server - 使用 SQL 中的外部表/Polybase 从外部源(Azure 存储 Blob)中选择数据。表已创建但未返回数据

标签 sql-server hadoop azure-sql-database azure-sql-data-warehouse polybase

我有一个“|” 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  
);  

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

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

最佳答案

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

当您创建身份时,您设置 IDENTITYSECRET参数。对于 blob 存储,您可以设置 IDENTITY无论你想要什么字符串,我总是使用 user .

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

enter image description here

希望这可以帮助。

关于sql-server - 使用 SQL 中的外部表/Polybase 从外部源(Azure 存储 Blob)中选择数据。表已创建但未返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59899701/

相关文章:

asp.net-mvc-3 - ASP.NET 成员(member)资格 - 登录在本地有效,但在 Azure 上失败

SQL - 如果表中存在值,如何返回 bool 值

sql - 从两个没有关系的表中选择

java - 使用 Java API 在 Hadoop 中移动文件?

azure-sql-database - 不使用弹性查询在两个 Azure SQL 数据库之间移动数据

azure - 从 azure 应用服务启动 .net core Web 应用时,用户 'myid' 登录失败

mysql - 将级联与复合主键结合使用

SQL:根据 GETDATE() 进行列验证

database - 如何找出 Hive 数据库的总大小

hadoop - elasticsearch-hadoop 1.3 M3代理支持不起作用