2

我对上述任务需要使用的各种技术感到不知所措。我已经搜索了堆栈溢出库存,但无法确定执行此操作的步骤的可靠检查列表。

我想大致了解将 Word 文档插入数据库时​​需要使用的步骤/工具。

我想过:

  1. 将 word 文件作为 FileStream 读取。
  2. 将其反序列化为 xml 对象(单词 ml)。
  3. 不知何故(不知道如何)将单词 ml 插入到 sql server 的 xml 列中。

是否可以使用 XMLSerializer 对象读取单词 ml?然后我将如何将其插入数据库?

编辑:我实际上需要对存储的数据执行操作,例如使用 xpath 查找节点,因此我需要将其存储为 xml...

4

5 回答 5

2

您应该使用 FileStream 或普通的 BLOB 存储。FileStream 确实需要更多的初始工作,并且我在升级某些已安装的数据库以使用它时遇到了问题。根据您重新安装服务器以使其正常工作的能力/意愿,您当然应该在走得太远之前进行概念验证。从技术上讲,我从来没有遇到过使用 BLOB 的问题

已经进行了一些研究,根据您的使用模式应该首选哪个。IE。如果您的文件平均大于 1Mb,并且您需要快速读取访问权限,则最好使用 FileStream。

我自己很少看到性能差异,但从设计的角度来看,我确实更喜欢 FileStream。

看一眼:

http://technet.microsoft.com/en-us/library/bb933993.aspx

http://www.mssqltips.com/sqlservertip/1489/using-filestream-to-store-blobs-in-the-ntfs-file-system-in-sql-server-2008/

于 2011-12-28T16:52:48.920 回答
1

大多数情况下,如果要在数据库中“按原样”存储文件,则将其存储为“BLOB”或“Binary Large OBject”。

这是一篇关于如何将 BLOB 数据读写到 MSSQL 的文章:http: //www.codecapers.com/post/manipulating-blob-data-in-mssql-with-c.aspx

如果您的文档的某些部分也需要从数据库中搜索,您可以将 BLOB 创建为列,并且这些项目仍然具有其他列或表关系(如类别、关键字、创建日期、所有者等)

于 2011-12-28T16:50:02.133 回答
0

您可以查找创建 byte[] 流以及在 google Microsoft.Interop 上查找,在线 MDSN 上有大量示例

如果您想序列化,请查看 BinaryStreaming CodeProject.com 以及 Stackoverflow 将提供来自过去用户/问题和解决方案的大量示例。

于 2011-12-28T16:46:18.167 回答
0

实际上 word 格式 (2010+) 是一个包含一堆 XML 的 zip :)。我建议使用 varbinary 或 text 列。

于 2011-12-28T16:46:52.693 回答
0

我认为您无法使用 XML 来执行此操作。我相信 Word 文档中有二进制内容。我会尝试 FileStream 并将其作为varbinary(max). 这无疑是处理它的最通用和最灵活的方法,如果您选择稍后扩展功能,您将能够重用您为任何其他文件类型编写的代码。

于 2011-12-28T16:47:25.903 回答