在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 INSERTOPENROWSET语言功能。有关更多信息,请参见here

BULK INSERT dbo.test 
FROM 'data/yourFile.txt' 
WITH (DATA_SOURCE = 'YourAzureBlobStorageAccount'); 

你的脚本更喜欢使用多碱这是只有在SQL Server 2016和SQL Azure的数据仓库,此时可用一个外部表的方式。