[英]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.