在Blob存储在Azure的SQL(不Azure的SQL DW)外部表
问题描述:
这里是我的脚本,我想在Azure中的SQL数据库上运行:在Blob存储在Azure的SQL(不Azure的SQL DW)外部表
CREATE DATABASE SCOPED CREDENTIAL some_cred WITH IDENTITY = user1,
SECRET = '<Key of Blob Storage container>';
CREATE EXTERNAL DATA SOURCE TEST
WITH
(
TYPE=BLOB_STORAGE,
LOCATION='wasbs://<containername>@accountname.blob.core.windows.net',
CREDENTIAL= <somecred>`enter code here`
);
CREATE EXTERNAL TABLE dbo.test
(
val VARCHAR(255)
)
WITH
(
DATA_SOURCE = TEST
)
我收到以下错误:
External tables are not supported with the provided data source type.
我的目标是在blob存储中创建外部表,以便HDInsight中的Hive查询引用相同的blob。该表需要通过Azure SQL进行管理。这个脚本有什么问题?
答
我在想外部表可以用于跨数据库查询(弹性查询)。所以它可能不能够使用外部数据源是BLOB_STORAGE
答
Azure的SQL数据库确实有功能加载存储在Blob存储文件,但它只能通过BULK INSERT
和OPENROWSET
语言功能。有关更多信息,请参见here。
BULK INSERT dbo.test
FROM 'data/yourFile.txt'
WITH (DATA_SOURCE = 'YourAzureBlobStorageAccount');
你的脚本更喜欢使用多碱这是只有在SQL Server 2016和SQL Azure的数据仓库,此时可用一个外部表的方式。