gpt4 book ai didi

sql - 有没有办法从本地 Azure Blob 存储批量插入?

转载 作者:行者123 更新时间:2023-12-02 23:24:37 24 4
gpt4 key购买 nike

TL;DR 我正在尝试将 SQL 从本地 Azure Blob 存储指向 BULK INSERT

问题:

大家好,

我尝试将本地 SQL Server 数据库实例作为外部连接连接到 Blob 存储模拟器,但是我收到“指定的位置错误或无法访问” 错误。以下是我正在采取的步骤:

我创建了以下 MasterDatabaseKeyCREDENTIALS,如下所示:

IF EXISTS (SELECT * FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##') 
DROP MASTER KEY;

--Create Master Key
CREATE MASTER KEY
ENCRYPTION BY PASSWORD='MyStrongPassword';

和数据库凭据:

-- DROP DB Credentials If Exist
IF EXISTS (SELECT * FROM sys.database_credentials WHERE name = 'credentials')
DROP DATABASE SCORED CREDENTIAL credentials;

--Create scoped credentials to connect to Blob
CREATE DATABASE SCOPED CREDENTIAL credentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET =
'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=='; --local storage key
GO

然后我创建了以下外部数据源:

CREATE EXTERNAL DATA SOURCE external_source
WITH
(
TYPE = BLOB_STORAGE,
LOCATION = 'http://127.0.0.1:10000/devstoreaccount1/container/some_folder/',
CREDENTIAL = credentials
)

但是当我运行BULK INSERT命令时:

BULK INSERT [dbo].[StagingTable] FROM 'some_file_on_blob_storage.csv' WITH (DATA_SOURCE = 'external_source', FIRSTROW = 1, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')

但失败并返回

Bad or inaccessible location specified in external data source "external_source".

如何将文件从本地 Blob 存储加载到 SQL Server 中?

最佳答案

Nick.McDermaid 已正确指出错误。从您的代码和错误消息来看,该错误是由错误的 LOCATION 语法引起的:

  • 请勿添加尾随/、文件名或共享访问签名配置时,LOCATION URL 末尾的参数用于批量操作的外部数据源。

引用此处:https://learn.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql?view=sql-server-ver15&tabs=dedicated#examples-bulk-operations

将值更改为LOCATION = 'http://127.0.0.1:10000/devstoreaccount1/container/some_folder',错误应该得到解决。我测试过,一切正常。 enter image description here

对于您的另一个问题,我们无法直接回答您。我建议你用详细的代码发布另一个问题。我们很高兴为您提供帮助。

更新:

关于你的另一个问题,我测试发现我们必须设置共享访问签名(SAS)'允许的资源类型'=对象,然后我们才能访问容器和子文件夹以及其中的文件容器。

enter image description here

例如,这两个语句都运行良好。 enter image description here

HTH。

关于sql - 有没有办法从本地 Azure Blob 存储批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65788973/

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