我可以将压缩文件批量加载到SQL Server吗?

问题描述 投票:0回答:2

有没有办法将数据从 Azure Blob 批量加载到 SQL Server?我正在通过 Azure 存储资源管理器访问这些文件。我很确定它可以完成,但我收到一条错误消息,提示“文件无法打开”。这是我的代码。

DECLARE @cmd varchar(1000)
SET @cmd = 'BULK INSERT [dbo].[dest_table]
FROM ''alldata/2019/06/29/BB/dds_id.out.20190629.gz''
WITH (      FIELDTERMINATOR = ''\n'',
            FIRSTROW = 46,
            ROWTERMINATOR = '''+CHAR(10)+''')';
PRINT @cmd
EXEC(@cmd)

文件以.gz结尾,因此它是压缩的。这是问题所在吗?更重要的是,有解决方法吗?我只有 SQL Server;无法访问 SSIS。

sql-server azure azure-storage azure-blob-storage bulkinsert
2个回答
1
投票

不完全符合您的要求,但 powershell 库 dba-tools 能够将 gzip 压缩的 CSV 文件批量复制到 SQL Server。

文件名只需以

.csv.gz

结尾即可

https://docs.dbatools.io/Import-DbaCsv.html


0
投票

压缩文件不是数据文件。

文档 批量插入 (Transact-SQL)

将数据文件以用户指定的格式导入到 SQL Server 中的数据库表或视图中。

参数 data_file :

是包含要导入到指定表或视图的数据的数据文件的完整路径。 BULK INSERT可以从磁盘(包括网络、软盘、硬盘等)导入数据。

一种方法是先解压缩.gz文件,然后使用BULK INSERT将数据文件加载到SQL Server。

还有另一种方法可以使用 Azure 数据工厂进行尝试。数据工厂可以帮助您在数据集设置中解压缩 .gz 文件:

参考本教程:使用 Azure 数据工厂将数据从 Azure Blob 存储复制到 SQL 数据库

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.