将 CSV 从 Blob 加载到 Azure SQL Server - 未找到引用的外部数据源

Sea*_*ish 4 sql-server csv sqlbulkcopy azure azure-sql-database

我正在尝试将 Blob 存储中托管的 CSV 批量插入到 Azure SQL Server 中,如MSDN 帖子中所述。

我的代码几乎完全取自这个 Microsoft Github 示例

运行它时,我收到以下错误:

找不到引用的外部数据源“MyAzureBlobStorage”。

-- Create Database Master Key
IF (select Count(*) from sys.symmetric_keys where name like '%DatabaseMasterKey%') = 0
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MYPASSWORD'; 
END

-- Create Storage Credential
IF (select Count(*) from sys.database_credentials where name = 'MyAzureBlobStorageCredential') = 0
BEGIN
print 'Creating credential'
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<secret>';
END

-- Create External Data Source
IF (select Count(*) from sys.external_data_sources where name = 'MyAzureBlobStorage') = 0
BEGIN
print 'creating external data source'
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE,
    LOCATION = 'https://myaccount.blob.core.windows.net/upload',
    CREDENTIAL= MyAzureBlobStorageCredential);
END

-- Create temp table to hold data
IF OBJECT_ID('tempdb..#mytemptable') IS NOT NULL DROP TABLE #mytemptable
CREATE TABLE #mytemptable(
    [Id] [uniqueidentifier] NOT NULL
    -- etc
)

-- Bulk insert into temp table
BULK INSERT #mytemptable
FROM 'mycsv.csv'
WITH ( DATA_SOURCE = 'MyAzureBlobStorage',
        FORMAT='CSV', CODEPAGE = 65001, --UTF-8 encoding
        FIRSTROW=2,
        TABLOCK);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

小智 6

我遇到过同样的问题。我在 @DavidBrowne-Microsoft 的评论中找到了答案,将其粘贴到此处以使其更加明显:

我重现了,BULK INSERT 目前不适用于临时表。创建一个永久表并尝试。