繁体   English   中英

Azure批量从Azure文件服务位置将csv文件导入Azure SQL Server

[英]Azure bulk import csv file into Azure SQL Server from Azure file service location

我想将一个csv文件(sqlserver-dba-csv.txt)导入到Azure中托管的SQL Server数据库的表中。

此文件位于Azure文件服务(位置地址:' https : //XXXXXXXXXXX.file.core.windows.net/XXXXXXXXXXX/sqlserver-dba-csv.txt '),它也是我本地计算机上的映射驱动器。

最终我希望通过触发器使其自动化,但是现在我只想将数据导入SQL服务器上的表中以证明该过程有效。

这个sqlserver-dba-csv.txt文件的内容是:

1,James Brown,blue 
2,Prince,red 
3,Rick James,yellow

我在SSMS上使用的代码是:

**--create a table
CREATE TABLE musicians_csv (
musician_id INT,
full_name VARCHAR(50),
colour VARCHAR(20)
)
GO
--bulk insert csv into a SQL Server table
BULK
INSERT musicians_csv
FROM 'https://XXXXXXXXXXX.file.core.windows.net/XXXXXXXXXXX/sqlserver-dba-csv.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Verify data inserted
SELECT *
FROM musicians_csv
GO
--Drop the table
DROP TABLE musicians_csv
GO**

我收到的错误消息是:

消息4861,级别16,状态1,行10无法批量加载,因为无法打开文件“https:/xxxxxxxxx.file.core.windows.net/xxxxxxxxx/sqlserver-dba-csv.txt”。 操作系统错误代码(null)。

(0行(s)受影响)

我怀疑文件位置的格式不正确,但搜索后无法找到任何解决方案。

或者 - 我能够在本地计算机上引用和导入文件,即使我的SQL Server位于Azure云中 - 例如:C:\\ Users \\ user.name \\ Desktop \\ sqlserver-dba- csv.txt”

任何帮助非常感谢

您可能遇到安全问题:如果尚未将文件声明为公共访问权限,则Azure SQL可能无法访问您尝试导入的文件。

当然,您可能不希望将文件设置为可供所有人使用,因此您必须存储凭据以通过CREATE CREDENTIAL命令将其访问到Azure SQL:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'A-$tr0ng|PaSSw0Rd!';
GO

CREATE DATABASE SCOPED CREDENTIAL [CSV-Storage-Credentials]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<shared-access-signature for "csvimportdemo" blob storage here>';
GO

CREATE EXTERNAL DATA SOURCE [CSV-Storage]
WITH 
( 
    TYPE = BLOB_STORAGE,
    LOCATION = 'https://csvimportdemo.blob.core.windows.net',
    CREDENTIAL= [CSV-Storage-Credentials]
);

完成后,您可以通过BULK命令访问该文件:

SELECT 
    FileId = ' + CAST(@fid AS NVARCHAR(9)) + ',
    FirstName, 
    LastName,   
    TwitterHandle
FROM OPENROWSET(
    BULK '<your file here>', 
    DATA_SOURCE = 'CSV-Storage',
    FIRSTROW=2,
    FORMATFILE='<your format file here>',
    FORMATFILE_DATA_SOURCE = 'Storage') as t

你可以在github上找到一个完整的工作样本(我发布的示例代码来自),它也使用Azure功能自动导入:

https://github.com/yorek/AzureFunctionUploadToSQL/blob/master/SQL/create-objects.sql

此链接可以帮助您: https//azure.microsoft.com/en-us/updates/preview-loading-files-from-azure-blob-storage-into-sql-database/

您需要创建一个外部数据源(如果您的blob存储不公开,则使用共享访问签名。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM