【问题标题】:Import a files like PDF MP3 DOC XLS into a MS SQL Server Datatable field将 PDF MP3 DOC XLS 等文件导入 MS SQL Server 数据表字段
【发布时间】:2010-09-23 01:38:44
【问题描述】:

有人知道如何在 MS SQL-Server 2000 中保存和检索文件吗?我猜图像数据类型可以用作容器。

我想导入/导出以下文件类型:DOC、XLS、PDF、BMP、TIFF 等。

由于资源问题,我们使用 MS-Access 2007 作为前端,所以我正在寻找 VBA 代码。

提前致谢。

【问题讨论】:

    标签: sql-server vba ms-access


    【解决方案1】:

    我建议您(真的!)不要尝试(永远!)将文件保存为数据库中的数据。您将很快面临关键的空间问题。

    请考虑为文件存储创建文件夹。这些将用于保存/归档您的文件。文件夹路径可以存储在您的一张表中(例如Tbl_Folder)。然后,您可以将文件名存储在表中(例如Tbl_File,其中将有一个“filename”字段)。您将能够使用Access.followHyperlink 方法打开它并使用File Scripting Object (FSO) 对其进行管理(复制/删除/移动)。

    【讨论】:

    • 虽然我同意您关于避免将文件存储在数据库中的主要观点,但有一个例外:如果您使用的是复制。在这种情况下,将文件存储在数据库中是使多个位置与文件中的相同数据保持同步的最简单方法。
    • 但是在数据库中存储文件的成本(在磁盘空间和交换量方面)是如此巨大,以至于我们通过结合数据复制和文件和文件夹复制开发了一个“自制”解决方案.
    • 我认为可能有几种同步文件系统的技术可能比数据库复制问题少得多。我投票赞成不在数据库中存储文件。
    【解决方案2】:

    您可以使用 GetChunk 和 AppendChunk 来做到这一点。

    来自this post,您可能会发现this link 很有帮助!

    需要注意的一点:

    在使用某些提供程序时,大多数 特别是 ODBC 到 SQL Server 和其他 数据库,您可能需要采取 检索 BLOB 数据时要特别小心, 例如将 BLOB 列放在 字段列表的结尾和引用 访问之前的所有非 BLOB 字段 BLOB 列。

    祝你好运!

    【讨论】:

      【解决方案3】:

      您可以使用流来做到这一点。此代码应该可以帮助您完成第一步:

      Set rs = New ADODB.Recordset
      rs.Open "select * from YourTable", Connection, adOpenKeyset, adLockOptimistic
      
      Set mstream = New ADODB.Stream
      mstream.Type = adTypeBinary
      mstream.Open
      mstream.LoadFromFile "c:\myfile.pdf"
      rs.Fields("blobfield").Value = mstream.Read
      rs.Update
      

      在数据库中存储文件并没有什么危险。我们有一个大约 20 GB 的 SQL Server 数据库,其中包含大约 40.000 个文档、图像等。3 年多来从未出现过问题。

      【讨论】:

        猜你喜欢
        • 2013-10-09
        • 2018-03-16
        • 1970-01-01
        • 2014-05-18
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        • 2014-11-08
        • 2011-02-06
        相关资源
        最近更新 更多