首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BCR从MSSQL服务器导出图像

BCR从MSSQL服务器导出图像
EN

Stack Overflow用户
提问于 2016-10-23 22:30:25
回答 2查看 86关注 0票数 0

我正在尝试用bcr从SQL server导出图像,我也想知道怎么做,所以我决定自己试一试。因此,我的问题是如何成功地从mssql导出图像,到目前为止我所做的工作如下所示:

在命令行中,我创建了文件formatfile-n.fmt并将其定位到E: disk,因为我在web上搜索了很多次,我发现需要编辑该文件以将其SQLBINARY值从8设置为0。在this post上阅读(我们讨论的是图像,这就是我们需要编辑SQLBINARY的原因)。

我执行了命令(如下所示)并将图像导出到我想要的位置,所有图像都在那里,但它们没有大小!

以下是我的完整代码,当图片没有大小时:

代码语言:javascript
复制
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的原因,但我已经这么做了!已将值更改为零!

代码语言:javascript
复制
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

我真的被困在这里了,这是如此恼人的工作,有人有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2016-10-24 03:01:14

我现在不知道原因,但BCP不能很好地导出图像。从SQL中导出图像的最佳方法是创建一个DotNet应用程序,在DataSet中加载图像并将其导出到文件中。有很多文章展示了如何做到这一点。Example 1 Example 2

但对于TSQL:

尝试在此Topic中编写的解决方案

有关更多信息,请阅读此Topic并阅读正确答案底部的注释。我们已经做了很多变通方法。

票数 0
EN

Stack Overflow用户

发布于 2016-11-24 21:15:39

在具有原始大小的图像的第二个代码块中,您似乎没有指定格式文件

注:我没有足够的名气来评论。

如果您不想只导出image列,那么实际上就没有必要进行冗长的查询,甚至不需要格式化文件。只需使用bcp将整个数据库表导出到路径中指定的数据文件。

代码语言:javascript
复制
Declare @sql varchar(500)
SET @sql = 'bcp Your_db.Your_table out Your_File_Path(eg: C:\ImagesNames.Dat) -T -S ' + @@SERVERNAME
EXEC @sql

请查看下面的相关链接:

https://msdn.microsoft.com/en-us/library/ms191232(v=sql.110).aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40204062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档