将word文档插入sql server数据库?

时间:2011-12-28 16:42:14

标签: c# sql-server xmlserializer wordml

对于我需要用于上述任务的技术种类,我感到非常不知所措。我已经搜索了堆栈溢出股票,但无法确定执行此操作的可靠步骤列表。

我想概述一下将word文档插入数据库时​​需要使用的步骤/工具。

我想到了:

  1. 将word文件作为FileStream读取。
  2. 将其反序列化为xml对象(word ml)。
  3. 以某种方式(不确定如何)将单词ml插入sql server中的xml列。
  4. 是否可以使用XMLSerializer对象读取单词ml?我如何将其插入数据库?

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

5 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我认为你不能使用XML来做到这一点;我相信Word文档中包含二进制内容。我会尝试FileStream并将其作为varbinary(max)存储在数据库中。这当然是处理它的最通用和最灵活的方法,如果您选择稍后扩展功能,您将能够重用您为任何其他文件类型编写的代码。