首页 > 解决方案 > 如何使用 bcp 将 blob 文件列表导入 SQL Server

问题描述

我在 SQL Server 中有一个包含 3 列的表:

id (int), Name (varchar), Column_Vb (Varbinary)

我想使用BCP. 和列包含 idIdName名称,但Column_Vb(data type is varbinary) 列中的数据包含 blob 文件的位置。

当我执行BCP IN命令时,我想将 blob 文件从指定位置加载到表中,但不是将位置的名称写入表中。

有什么办法BCP可以将这些 blob 文件加载到varbinary列中吗?

我尝试过使用格式文件,但它不起作用。由于有很多数据,我需要一个批量导入选项本身。

这些屏幕截图显示了我的数据和格式文件:

数据文件的图片

格式文件的图片

标签: sql-serverblobbcpbulk-loaddata-files

解决方案


我以前使用 Azure 来执行此操作。没有 Azure,只是一个猜测,但可能是这样的。

CREATE TABLE [dbo].[TestBlob](
[tbId] [int] IDENTITY(1,1) NOT NULL,
[tbName] [varchar](50) NULL,
[tbDesc] [varchar](100) NULL,
[tbBin] [varbinary](max) NULL
) ON [PRIMARY]  

Insert TestBlob(tbName, tbDesc, tbBin) Select 
'81.pdf','PDF file', BulkColumn from Openrowset( Bulk 
'C:\blob\udoc\81.pdf', Single_Blob) as tb 

Insert TestBlob(tbName, tbDesc, tbBin) Select 'mountain.jpg','Image 
jpeg', BulkColumn from Openrowset( Bulk 'C:\blob\udoc\mountain.jpg', 
Single_Blob) as tb

Insert TestBlob(tbName, tbDesc, tbBin) Select 'Questionnaire.docx','Doc 
Question', BulkColumn from Openrowset( Bulk 
'C:\blob\udoc\Questionnaire.docx', Single_Blob) as tb

Insert TestBlob(tbName, tbDesc, tbBin) Select 'txpeng542.exe','Texpad 
Exe', BulkColumn from Openrowset( Bulk 'C:\blob\udoc\txpeng542.exe', 
Single_Blob) as tb

有关更多信息,请参阅下面的链接。

https://sqlrambling.net/2020/04/04/saving-and-extracting-blob-data-basic-examples/


推荐阅读