使用Java在MySQL中存储HTML

使用Java在MySQL中存储HTML,java,mysql,html,storage,Java,Mysql,Html,Storage,所以,我现在正在做一个项目,我应该将网页存储在数据库中,我用它来爬行和连接到我的数据库 当我测试应用程序时,我得到了:com.mysql.jdbc.MysqlDataTruncation:Data truncation:Data对于“HTMLData”列来说太长了。 HTMLData列是TEXT 当我将HTMLData列更改为LONGTEXT时,错误消失了,但我担心将来可能会再次出现 有没有关于如何完美地做到这一点的想法,这样我就不用担心将来的错误(或任何其他类似的错误) 谢谢:)长文本可以容纳

所以,我现在正在做一个项目,我应该将网页存储在数据库中,我用它来爬行和连接到我的数据库

当我测试应用程序时,我得到了:
com.mysql.jdbc.MysqlDataTruncation:Data truncation:Data对于“HTMLData”列来说太长了。

HTMLData
列是
TEXT

当我将
HTMLData
列更改为
LONGTEXT
时,错误消失了,但我担心将来可能会再次出现

有没有关于如何完美地做到这一点的想法,这样我就不用担心将来的错误(或任何其他类似的错误)


谢谢:)

长文本可以容纳4294967295字节,请参阅

我想说你不想存储比4GB更大的HTML文档,是吗


(编辑,用1字节超出字节计数,2^32-1当然)

这听起来不是一个好的设计。为什么必须在数据库中存储HTML?感觉上它将从视图到持久性的每一层都结合在一起

JSP是HTML页面的动态模板;为什么不直接使用JSP呢

这是一个值得重新思考的设计

原则上,一个长文本字段可以保存4GB数据,但其他较小的限制可能适用:例如,从“MySQL 5.1服务器或客户端可以传输或从中传输的最大数据包是1GB”。我认为这实际上意味着您将在一个长文本中获得大约1GB的容量(即使如此,您也必须重新配置默认的最大数据包大小)


不考虑这个限制,HTML通常压缩得很好,所以如果你的框架允许的话,我建议你实际考虑一个长BLUB并在存储之前通过一个通缩器来运行数据(通过检索的充气机).

但请看我下面的答案——实际上,您可能无法通过JDBC连接器将4GB的容量转换为一个容量。我的观点是,对于HTML来说,4GB已经足够了,对于任何合理的HTML文档来说,即使1GB也应该太多了。达到65K的极限OK,MEDIUMTEXT应该足够了,16MB的标准max_allowed_数据包已经非常适合纯HTML了。我可能错了,但我倾向于认为,如果你担心会超出文本(尤其是长文本)列的大小,您最好将这些项保存为静态文件,并将路径存储在数据库中。即使我错了,最好把它们保存在数据库中,我也同意达菲莫的观点,你应该重新检查你的设计。它们可能不是他自己的页面。即便如此,即使对于爬行/搜索机器人,也可以更轻松地将其保存为文件&只将解析/相关数据存储在数据库中如果是,请不要存储HTML,这是一个非常大百分比的垃圾。我不知道你到底在寻找什么,但是解析文本、标题以及你需要的任何东西并存储它们。如果您愿意,您可以保留下载的实际HTML的文件备份。如果您正在进行任何类型的严重爬网,存储整个网页将非常昂贵-internet存档需要约2 PB()来存储它存档的所有内容,这非常昂贵。您应该处理您所爬网的内容,以除去不需要的所有内容,从而最小化所需的磁盘空间。您还可以研究Lucene之类的东西来为正在爬行的数据建立索引(),这将为您做很多工作。