【发布时间】:2016-10-23 14:30:24
【问题描述】:
我正在尝试使用 bcr 从 SQL Server 导出图像,我也想知道如何做到这一点,所以我决定自己尝试一下。所以我的问题是如何成功地从 mssql 导出图像,到目前为止我所做的描述如下:
在命令行上,我创建了文件formatfile-n.fmt 并将其定位到E: 磁盘,因为我在网上搜索了很多,我发现它需要编辑该文件以将其 SQLBINARY 值从 8 设置为 0。阅读this post(我们在谈论图像,这就是我们需要编辑 SQLBINARY 的原因)。
我执行了命令(如下)并将图像导出到我想要的位置,所有图像都在那里,但它们没有大小!
这是我在图片没有尺寸时的完整代码:
EXEC sp_configure 'show advanced options', 1
GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 GO RECONFIGURE GO
EXEC master..xp_cmdshell 'mkdir C:\ImagesFromSql'
DECLARE @ID as int DECLARE @SQL as varchar(4000)
DECLARE csr CURSOR FOR SELECT BrojIskaznice FROM [Savez].[dbo].[Igraci]
OPEN csr
FETCH NEXT FROM csr INTO @ID
WHILE @@FETCH_STATUS = 0 BEGIN
SET @SQL = 'BCP "SELECT Fotografija FROM [Savez].[dbo].[Igraci] WHERE BrojIskaznice = "' + CAST(@ID as varchar(10)) + ' queryout "C:\ImagesFromSql\' + CAST(@ID as varchar(10)) + '.jpg" -T -fC "E:\formatfile-n.fmt'
EXEC master..xp_cmdshell @SQL
FETCH NEXT FROM csr INTO @ID
END
CLOSE csr DEALLOCATE csr
当图像具有原始大小时,这是我的完整代码。但它们根本无法打开!就像它们已经损坏一样,这就是我回到this post 的原因,但我已经这样做了!将值更改为零!
EXEC sp_configure 'show advanced options', 1
GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 GO RECONFIGURE GO
EXEC master..xp_cmdshell 'mkdir C:\ImagesFromSql'
DECLARE @ID as int DECLARE @SQL as varchar(4000)
DECLARE csr CURSOR FOR SELECT BrojIskaznice FROM [Savez].[dbo].[Igraci]
OPEN csr
FETCH NEXT FROM csr INTO @ID
WHILE @@FETCH_STATUS = 0 BEGIN
SET @SQL = 'BCP "SELECT Fotografija FROM [Savez].[dbo].[Igraci] WHERE BrojIskaznice = "' + CAST(@ID as varchar(10)) + ' queryout "C:\ImagesFromSql\' + CAST(@ID as varchar(10)) + '.jpg" -T -N'
EXEC master..xp_cmdshell @SQL
FETCH NEXT FROM csr INTO @ID
END
CLOSE csr DEALLOCATE csr
我真的被困在这里,这太烦人了,有人有什么建议吗?
【问题讨论】:
标签: database image tsql export bsp