📜  https: www.jitendrazaa.com 博客 sql sqlserver export-documents-saved-as-blob-binary-from-sql-server - SQL (1)

📅  最后修改于: 2023-12-03 15:31:20.512000             🧑  作者: Mango

技术博客推荐:导出SQL Server中已保存为BLOB/Binary格式的文档

在日常开发中,我们经常需要将SQL Server中存储的文档导出成可读的文件。本文中我们介绍一种在SQL Server中将已保存为BLOB/Binary格式的文档导出成可读文件的方法。这个方法适用于Microsoft SQL Server 2005版本以及以上的版本。

实现方法
  1. 创建一个储存过程

    CREATE PROCEDURE ExportDocumentsASBlob
    (
    @DocID INT,
    @FilePath VARCHAR(200)
    )
    AS
    BEGIN
    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, (SELECT DocumentData FROM Document WHERE DocumentID = @DocID)
    EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @FilePath, 2
    EXEC sp_OAMethod @ObjectToken, 'Close'
    EXEC sp_OADestroy @ObjectToken
    
    END
    

    这个储存过程的目的是将储存在Document表中的文件导出。需要提供两个参数:@DocID是您想要导出的文件的ID,@FilePath是导出文件的路径。

  2. 运行储存过程导出文件

    执行以下语句可以帮助导出指定ID的文档。

    EXEC ExportDocumentsASBlob @DocID=1, @FilePath='C:\ExportedDocument.docx'
    
注意事项

请注意以下事项:

  1. 该方法需要开启OLE Automation才能运行。您可以通过以下语句开启它:

    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ole Automation Procedures', 1;
    GO
    RECONFIGURE;
    GO
    
  2. 请确保您想导出的文件的文件类型是正确的,并且您在运行程序之前已安装有合适的程序来打开该文件类型。

  3. 如果在导出过程中出现错误,请检查您项目运行的权限以及相关的数据库配置。

结论

通过这种方法,我们可以很容易地从SQL Server中导出已保存为BLOB/Binary格式的文档。如果您在使用中遇到问题,请随时联系我。祝您使用愉快!

参考文献

Export Documents Saved as BLOB/Binary from SQL Server