[英]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.