如何取出数据库的blob文件?

Eternalc 2011-10-18 01:46:44
请教一个问题,是这样的,过去我们有个系统,用如下语句把图片插入到数据库里(当然,我知道这个办法不好)

INSERT INTO T_Picture(PictureID, Picture)
SELECT NEWID(), x
FROM OPENROWSET(BULK 'C:\1.jpg',SINGLE_BLOB) AS T(x)

现在我有一个比较特殊的应用,想把保存成blob的文件从数据库里取出来,另存为某个本地路径,请问这种语句怎么写?

除了用java 读成2进制流写出来外,有没直接纯SQL可以操作的语句?
我想用纯SQL语句来操作,请教下,数据库是SQLServer2008
...全文
892 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eternalc 的回复:]

那可以教我下,SQL2000里用textcopy的语句怎么写吗?谢谢了
[/Quote]

方法:
1、建立过程
CREATE PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str

2、建表和初始化数据
create table 表名 (编号 int,image列名 image)
go
insert 表名 values(1,0x) -- 必须的,且不是null
insert 表名 values(2,0x) -- 必须的,且不是null
go

3、读入
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','I' --注意条件是 编号=1

sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','I' --注意条件是 编号=2

go

4、读出成文件
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','O' --注意条件是 编号=1

sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','O' --注意条件是 编号=2
go

************如果报textcopy不是可执行文件的话,你就到
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
目录下拷备 textcopy.exe到:
C:\Program Files\Microsoft SQL Server\80\Tools\Binn

Eternalc 2011-10-18
  • 打赏
  • 举报
回复
好像textcopy是一个工具把?
Eternalc 2011-10-18
  • 打赏
  • 举报
回复
那可以教我下,SQL2000里用textcopy的语句怎么写吗?谢谢了
中国风 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 eternalc 的回复:]
请教一个问题,是这样的,过去我们有个系统,用如下语句把图片插入到数据库里(当然,我知道这个办法不好)

INSERT INTO T_Picture(PictureID, Picture)
SELECT NEWID(), x
FROM OPENROWSET(BULK 'C:\1.jpg',SINGLE_BLOB) AS T(x)

现在我有一个比较特殊的应用,想把保存成blob的文件从数……
[/Quote]
SQL2005沒辦法,SQL2000可用textcopy實現

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧