簡體   English   中英

從 Azure Blob 存儲讀取文件到 Azure SQL 數據庫

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

還有什么人可以看到出錯了,我需要糾正嗎?

如本文檔頁面中所述,Azure SQL 數據庫當前不支持OPENROWSET 您可以使用BULK INSERT將數據插入到臨時表中,然后查詢該表。 有關BULK INSERT文檔,請參閱此頁面

現在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM