[英]read file from Azure Blob Storage into Azure SQL Database
我已经使用本地 SQL Server Express 设置测试了此设计。
我上传了几个 .json 文件到 Azure Storage 在 SQL 数据库中,我创建了一个外部数据源:
CREATE EXTERNAL DATA SOURCE MyAzureStorage WITH (TYPE = BLOB_STORAGE, LOCATION = 'https://mydatafilestest.blob.core.windows.net/my_dir );
然后我尝试使用我的外部数据源查询文件:
select *
from OPENROWSET
(BULK 'my_test_doc.json', DATA_SOURCE = 'MyAzureStorage', SINGLE_CLOB) as data
但是,此操作失败并显示错误消息“无法批量加载。文件“prod_EnvBlow.json”不存在或您没有文件访问权限。
如此处所述,我是否需要配置 DATABASE SCOPED CREDENTIAL 才能访问文件存储? https://docs.microsoft.com/en-us/sql/t-sql/statements/create-database-scoped-credential-transact-sql
还有什么人可以看到出错了,我需要纠正吗?
现在OPENROWSET
处于公共预览阶段,以下工作正常。 注意,关键选项是在您的 blob 不公开的情况下。 我在具有范围凭据选项的私有 blob 上进行了尝试,并且成功了。 nnb 如果您使用的是 SAS 密钥,请确保删除前导?
所以字符串应该以sv
开头,如下所示。
确保blobcontainer/my_test_doc.json
部分指定了正确的路径,例如container/file
。
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=2017****************';
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE,
LOCATION = 'https://yourstorage.blob.core.windows.net',
CREDENTIAL= MyAzureBlobStorageCredential);
DECLARE @json varchar(max)
SELECT @json = BulkColumn FROM OPENROWSET(BULK 'blobcontainer/my_test_doc.json',
SINGLE_BLOB, DATA_SOURCE = 'MyAzureBlobStorage',
FORMATFILE_DATA_SOURCE = 'MyAzureBlobStorage') as j;
select @json;
这些文档中提供了更多详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.