繁体   English   中英

与Concat批量存储(从文件夹上传所有图像)

[英]Bulk with Concat (Upload all images from a folder)

我在使用Bulk函数时遇到了一些麻烦,我不确定该怎么做。 因此,我需要将一个文件夹中的所有图像上传到一个表中,我可以使用下一个代码上传1张图像:

Insert into ImageTest(ID, Imagen)
SELECT 'SQL Server Image', *
FROM OPENROWSET (BULK N'C:\Users\G11904\Pictures\Students\0001.PNG', SINGLE_BLOB) image;

ImageTest仅具有2列,ID为NVARCHAR。 该ID将保存图像的名称。 Imagen是Varbinary,这是我要存储图像的地方。

我的文件夹上现在有10张图像(以后我将有1000张图像)。

我拥有所有图像的文件夹

因此,我尝试下一个代码来尝试存储所有图像:

DECLARE @cnt INT = 0;
DECLARE @cntImage INT = 1;
WHILE @cnt < 3000
BEGIN
Insert into ImageTest(ID, Imagen)
SELECT 'SQL Server Image', *
FROM OPENROWSET (BULK CONCAT(N'C:\Users\G11904\Pictures\Students\000', @cntImage, '.PNG'), SINGLE_BLOB) image; 
SET @cntImage = @cntImage + 1
END

但我收到此错误:CONCAT附近的语法不正确。

有人可以帮忙解决此问题吗?我不确定自己做错了什么。

尝试使用动态查询 ;

DECLARE @cnt INT = 0;
DECLARE @cntImage INT = 1;
declare @query nvarchar(1000)
declare @imagePath nvarchar(1000)
WHILE @cnt < 3000
BEGIN
set @imagePath  = CONCAT(N'C:\Users\G11904\Pictures\Students\000', @cntImage, '.PNG')
set @query = 
    'Insert into ImageTest(ID, Imagen)
    SELECT ''SQL Server Image'', *
    FROM OPENROWSET (BULK '''+@imagePath+''', SINGLE_BLOB) image; '
    print @query
    exec sp_executesql @query
    SET @cntImage = @cntImage + 1
END

OPENROWSET需要字符串。 您不能传递变量。

暂无
暂无

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

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