是否可以将压缩文件批量加载到SQL Server?

时间:2019-09-03 18:06:07

标签: sql-server azure azure-storage azure-storage-blobs bulkinsert

是否可以将数据从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。

1 个答案:

答案 0 :(得分:0)

压缩文件不是数据文件。

文档BULK INSERT (Transact-SQL)

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

参数data_file:

  

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

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

还有另一种使用Azure Data Factory进行尝试的方法。 Data Factory可以帮助您在数据集设置中解压缩.gz文件: enter image description here

参考本教程:Copy data from Azure Blob storage to a SQL database by using Azure Data Factory

希望这会有所帮助。