2011-12-28 38 views
2

我对上述任务需要使用的各种技术感到颇为不知所措。我已经搜索了堆栈溢出股票,但无法找到一个坚实的步骤清单来做到这一点。插入一个Word文档到SQL Server数据库?

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

我想过:

  1. 读取word文件作为一个FileStream。
  2. 将其反序列化为一个xml对象(单词ml)。
  3. 莫名其妙地(不知道如何)将词ml插入到sql服务器的xml列中。

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

编辑: 我真的需要像使用XPath找到节点存储的数据进行操作,因此我需要将其存储为XML ...

+0

你需要一个实际的 “图形” 的Word文档内的代表性,或只是文本?根据您的目标,您可以采取不同的方式。 – joshua9k 2011-12-28 16:45:55

+2

你想让它在数据库中搜索吗?如果没有,最好将它保存为二进制格式,以节省空间。如果您想使其全文搜索,您需要将其保存为文本。我不知道为什么你想要xml序列化它 – Andrey 2011-12-28 16:46:25

+1

是否需要将Word文档存储为XML或者它是否也可以是Word 2003中的.doc格式? – 2011-12-28 16:47:22

回答

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/

0

你可以查找创建一个byte []信息流,以及作为在谷歌Microsoft.Interop上查找有很多MDSN在线的例子

如果你想序列化看看BinaryStreaming CodeProject.com以及Stackoverflow将提供过去的用户/问题和解决方案的吨样本。

0

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

0

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

+0

我会建议使用'varbinary(max)'为最大2 GB的二进制列... – 2011-12-28 17:13:36

+1

好点。我根据你的建议更新了我的答案。 – Jeff 2011-12-28 17:15:48

+0

当文件流工作时,我会说这和varbinary之间在重用性方面没有区别。我错了吗? – 2011-12-28 17:21:04

1

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

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

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

+0

提供的链接现已停止。 – Paul 2015-08-26 12:35:36

相关问题