在sql server中存储html内容和其他文档(pdf、word、excel)?
Posted
技术标签:
【中文标题】在sql server中存储html内容和其他文档(pdf、word、excel)?【英文标题】:Storing html content and other documents (pdf, word, excel) in sql server? 【发布时间】:2010-12-08 04:59:33 【问题描述】:什么数据类型最适合存储 html 内容和文档,例如 pdf、excel 文件和 word 文档。我目前正在使用 ntext,但我不确定这是否是存储 html 内容的最佳数据类型。
此外,我目前使用 FCKEditor 将 html 内容保存到 ntext 字段,并将标记与样式一起存储。如果我碰巧将部分描述读入 ListView 的 ItemTemplate 中,内容如下:
<%# Eval("content") %>
它显示内容,但也显示标记。例如,而不是显示:
"This is an html string"
,它会显示<p>This is and html <b>string</b></p>
【问题讨论】:
【参考方案1】: 将 Unicode HTML 存储为 ntext 如果您 110% 确定您只需要 ascii,则可以使用 text 或 varchar。 将二进制文件(pdf、word、excel)存储为二进制 blob【讨论】:
当您说 text 时,您的意思是与 ntext 相对吗?如果我的 html 将使用多种语言怎么办? 如果您预计需要 Unicode 支持,请使用 ntext 或 nvarchar。否则,ASCII 将占用更少的空间。 确实如此,但请记住,HTML 通常需要 Unicode。在 SQL Server 2008 中,Unicode 压缩在减少 不 ASCII 集之外的字符的存储空间方面非常聪明。我这里做了一些评测(应该是前三名):is.gd/4rJ3c我很期待这个。【参考方案2】:我会将 HTML 存储在 NVARCHAR(MAX) 中(如果您不需要超过 4000 个字符,则更少)。不要使用 TEXT/NTEXT 数据类型,除非您被困在 SQL Server 2000 中。它们已被弃用,并且 MAX 类型的优点使它们的使用变得愚蠢恕我直言。
我会研究在 SQL Server 2008 中将文件存储为 FILESTREAM。如果您是
将文件存储在数据库中的好处是您可以获得事务一致性。缺点是您使用更多的数据库空间,这通常是在更昂贵的存储上。您也很难进行调试(您不能只在 Management Studio 中说“SELECT PDFFile FROM Table”,然后期望 Acrobat Reader 弹出并显示您的列的内容)。
因为在工作中,我不得不向未出生的孩子请求并签署权利以获得更多的 SAN 分配,而在游戏中,我的数据库空间使用量比我的文件空间使用量要多很多 ,我每次都选择基于文件的存储。在工作中,我们的文件系统得到了备份,虽然它不是 100% 与数据库备份同步,但我们看到的文件损坏问题很少不是最终用户的错(并且在没有我们参与的情况下很容易纠正)-零,事实上 - 似乎不值得调查。
就像我说的,个人喜好。但要提出正确的问题并了解您的目标和局限性。
【讨论】:
爆炸,亚伦!我只是在输入一个类似的回复:) Stu 我肯定需要超过 400 个字符,而且我没有 sql server 2005,尽管这可能很快就会改变。将它们存储在硬盘驱动器上,然后将指向 html 文档的链接存储在数据字段中并不是一个坏选择。 有了 FileStream 对象,我也可以存储 pdf、excel、word 等文档吗?我也可以将它们存储在文件系统上,对吗? 对不起,应该是 4000,不是 400。我的打字机认为它不必在深夜工作这么辛苦。 FileStream 是一个非常大的话题,需要广泛的理解和规划。简而言之,是的,您可以存储可以存储在文件系统中的任何类型的文档,并且可以在文件系统的任何位置分配文件流存储空间(有限制,您可以想象)。如果您使用 SQL Server 2008,我会阅读更多关于 FileStream 的内容,并且真的认为这可能是一个好处:msdn.microsoft.com/en-us/library/bb895234.aspx / msdn.microsoft.com/en-us/library/bb895234.aspx以上是关于在sql server中存储html内容和其他文档(pdf、word、excel)?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL Server 表中读取图像数据(存储 word 文档)并将其保存到本地文件夹