【发布时间】:2013-03-07 22:00:25
【问题描述】:
我在表格中有不同类型的文件(txt、doc、jpg 等),我想将它们全部保存到我的文件系统中。我知道如何逐个文件执行此操作,但这没用,我必须执行一个循环,一次保存所有具有正确扩展名的文件。有什么建议吗?
我现在就是这样做的:
DECLARE @ObjectToken INT
EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, <this is where binary data goes>
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, 'd:/file.txt', 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken
所以,我的问题是,有没有一种方法可以一次对 db 表中的所有记录(保存所有文件)执行此操作,并为每个保存的文件设置正确的文件扩展名?
【问题讨论】:
-
你到底在问什么?
-
我在问如何将二进制数据(图像数据类型)从 sql server 数据库保存到文件系统作为文件。
-
您的代码看起来像是从heidibrebels.be/blog/archives/2011/… 复制而来的,有什么理由您也不使用光标部分吗?
-
我没有从那里复制它,所以我没有看到带有光标的部分。无论如何,正如我在heidibrebels.be/blog/archives/2011/… 上看到的,它将所有文件保存为.jpg,并且我有几个不同的文件扩展名。您是否知道如何使用自己的扩展名保存每个文件?
-
为我的假设道歉。如果您没有存储原始文件名和/或扩展名,则没有(简单的)方法可以检索它们。但是,您可以检查二进制文件的第一个字节:.jpg 以 ff d8 ff e0 xx xx "JFIF" 开头,.png 以 xx "PNG" 开头(xx = 任意十六进制值)等
标签: sql sql-server image binary file-extension