将SQL Server Filestream数据保存到文件

时间:2014-03-03 14:25:25

标签: sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

我使用SQL Server并在我的数据库上启用FileStream。为了将我的文件保存到文件流表,我使用SSMS下面的代码:

INSERT INTO dbo.mytable( Data )
SELECT *
FROM OPENROWSET(BULK 'C:\Temp\image.png', SINGLE_BLOB) AS z

我寻找一个SQL查询来将FileStream数据从表保存到特殊路径。

怎么做呢。

我寻找SQL Server查询,我不想在.Net,Delphi等中使用工具应用程序或编程。

提前致谢

2 个答案:

答案 0 :(得分:2)

这个怎么样?这是一种将文件写入磁盘的纯SQL方法,但它会使用命令shell,这会在服务器上造成安全风险。

declare @writetofile varchar(max) 
select @writetofile = 'osql -U -P -S -Q"select ColumnName from yourtable" -o"c:\SomeFolder\MyFile.bin" 
exec master..xp_cmdshell @writetofile 

更新: 这不是最容易运行的东西,但尝试在powerscript或.bat文件中运行它:

 Rem CD command sets the execution folder
 cd C:\Program Files\Microsoft SQL Server\90\Tools\binn

 rem SQLCmd sets the command using SQLCmd.exe program 
 rem -S = server name, -d database name, -U is username, -P is password, -Q is query to run, -o is output to
 SQLCMD -S ServerName\InstanceName -d DBName -U sa -P MyPassword -Q"select top 1 FieldName from  TableName" -o"c:\temp\MyFile.txt"

答案 1 :(得分:0)

这篇文章可以帮到你: Script to save varbinary data to disk

class formulaire_evaluation(models.Model):
     _name = 'pncevaluation.fe'
     _description = u"Formulaire d\'évaluation"
     name = fields.Char(u"Intitulé du formulaire")
     contributeur = fields.Many2one('pncevaluation.contributeur',string="Contributeur")
     date = fields.Date(u"Date")


     @api.multi
     def write(self, vals):
        rec = super(formulaire_evaluation, self).write(vals)
        #my_custom_code
        return rec