Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure批量将csv文件从Azure文件服务位置导入Azure SQL Server_Sql_Sql Server_Csv_Azure Sql Database_Azure Storage - Fatal编程技术网

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

Azure批量将csv文件从Azure文件服务位置导入Azure SQL Server,sql,sql-server,csv,azure-sql-database,azure-storage,Sql,Sql Server,Csv,Azure Sql Database,Azure Storage,我想将csv文件(sqlserver dba csv.txt)导入Azure中托管的sqlserver数据库的表中 此文件位于Azure文件服务(位置地址:“”)上,该服务也是我的本地计算机上的映射驱动器 最终,我希望通过一个触发器来实现某种程度的自动化,但现在我只想将数据导入SQL server上的一个表中,以证明该过程是有效的 此sqlserver-dba-csv.txt文件的内容包括: 1,James Brown,blue 2,Prince,red 3,Rick James,yello

我想将csv文件(sqlserver dba csv.txt)导入Azure中托管的sqlserver数据库的表中

此文件位于Azure文件服务(位置地址:“”)上,该服务也是我的本地计算机上的映射驱动器

最终,我希望通过一个触发器来实现某种程度的自动化,但现在我只想将数据导入SQL server上的一个表中,以证明该过程是有效的

此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**
我收到的错误消息是:

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

(受影响的0行)

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

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


非常感谢您的任何帮助

此链接将帮助您:


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

您可能会面临一个安全问题:如果您尝试导入的文件未声明为公共访问,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]
);
CREATE MASTER KEY ENCRYPTION BY PASSWORD='A-$tr0ng | PaSSw0Rd!';
去
创建数据库范围的凭据[CSV存储凭据]
标识为“共享访问签名”时,
秘密='';
去
创建外部数据源[CSV存储]
具有
( 
类型=BLOB_存储,
地点:https://csvimportdemo.blob.core.windows.net',
凭证=[CSV存储凭证]
);
完成此操作后,您可以通过批量命令访问该文件:

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
选择
FileId='+CAST(@fid AS NVARCHAR(9))+',
名字,
姓,
推特手柄
从OPENROWSET(
批量“”,
数据源='CSV存储',
第一行=2,
FORMATFILE=“”,
格式文件\u数据\u源='Storage')为t
您可以在github上找到一个完整的工作示例(我发布的示例代码取自此示例),该示例还使用Azure函数自动导入:


看看这个答案,但我在这里使用了blob:您好,欢迎使用堆栈溢出。一般来说,只链接的答案不受欢迎,因为它们不能提供解决大多数问题的上下文。请阅读以获取有关编写更好答案的更多信息。谢谢,这很有帮助-我想看看是否可以使用Azure文件服务而不是Azure blob存储在Azure SQL server上创建外部数据源,因为将Azure文件存储映射到我的本地计算机并触发导入很容易。我发现您无法将azure blob存储映射到本地windows计算机,因此我必须找出如何使用blob存储完成此操作。