gpt4 book ai didi

c# - 是否可以从存储过程访问 Azure Blob?

转载 作者:行者123 更新时间:2023-12-02 06:40:44 25 4
gpt4 key购买 nike

我有一个存储过程,它通过网络路径访问服务器上的文件,但现在我们正在从服务器转移到 Azure Blob。是否可以通过存储过程访问 Azure Blob 上的文件?

存储过程主要读取服务器上的 CSV 文件并将这些文件中的数据插入到表中。

最佳答案

此功能已在 2017 年公共(public)预览版中记录,不久前我也遇到过类似的问题。

Azure SQL 数据库使您可以使用以下 SQL 语句直接加载存储在 Azure Blob 存储中的文件:

  • BULK INSERT T-SQL 命令,将文件从 Blob 存储帐户加载到 SQL 数据库表中

  • OPENROWSET 表值函数,用于解析 Blob 存储中存储的文件并将文件内容作为一组行返回

以下示例显示了将文件内容加载到 SQL 数据库中的 BULK INSERT 命令:

BULK INSERT Product
FROM 'data/product.dat'
WITH ( DATA_SOURCE = 'MyAzureBlobStorageAccount');

可以使用OPENROWSET函数解析远程文件的内容并返回文件中的行作为结果:

SELECT Name, Color, Price, Size, Quantity, Data, Tags
FROM OPENROWSET(BULK 'data/product.bcp', DATA_SOURCE = 'MyAzureBlobStorage',
FORMATFILE='data/product.fmt', FORMATFILE_DATA_SOURCE = 'MyAzureBlobStorage') as products;

作为先决条件,您需要创建一个指向您的 Azure Blob 存储帐户的外部数据源。您将在 DATA_SOURCE 属性中使用此外部数据源的名称。以下是指向公共(public) Azure Blob 存储帐户的外部数据源示例:

CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE, LOCATION =
'https://myazureblobstorage.blob.core.windows.net');

如果您的 Azure Blob 存储帐户不是公共(public)的,则需要使用 Azure 门户为该帐户生成共享访问签名 (SAS) key ,将 SAS key 放入 CREDENTIAL 中,并使用 CREDENTIAL 创建外部数据源,如下例所示:

CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=2015-12-11&ss=b&srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z&spr=https&sig=copyFromAzurePortal';


CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE,
LOCATION = 'https://myazureblobstorage.blob.core.windows.net',
CREDENTIAL= MyAzureBlobStorageCredential);

引用文献

https://azure.microsoft.com/en-us/updates/preview-loading-files-from-azure-blob-storage-into-sql-database/

https://github.com/Microsoft/sql-server-samples/tree/master/samples/features/sql-bulk-load/load-from-azure-blob-storage

https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql?view=sql-server-ver15

enter image description here

关于c# - 是否可以从存储过程访问 Azure Blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63332731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com