在 mysql 中存储完整的 html 页

storing full html pages in mysql

我正在尝试将完整的 HTML 页面存储在 MySQL 数据库中。

这是我的数据库模式:

我认为这个 SQL 查询必须完成这项工作:

SELECT PC.id, T.name AS tag, HT.name AS attr,
       HTV.content AS attr_val, PC.content, C.Count
FROM page_content AS PC
INNER JOIN page AS P ON PC.page = P.id
INNER JOIN html_tags AS T ON PC.tag = T.id
INNER JOIN html_tag_attr_val AS HTV ON PC.attr = HTV.id
INNER JOIN html_tag_attr AS HT ON HTV.attr = HT.id
LEFT JOIN (SELECT tag_parrent, COUNT(*) AS Count
           FROM page_content
           GROUP BY tag_parrent) C ON P.id = C.tag_parrent
WHERE P.name = 'index' AND PC.tag_parrent = 0

但是当 attr 列为空时出现问题 前任。我插入了没有属性的 span 标签。 这个查询什么也没给我。

我的假设是您已经走到 HTML 的这个极端 break-apart/storage 因为您想使用数据库工具以某种方式分析标签使用情况?

我支持 Marc B,数据库并不是解决此类问题的最佳方式...

如果您觉得必须,那么您可能希望在将原始 HTML 存储到确保 html 格式正确且有效,然后再将其存储到一组这样的关系表中。这将显着减少极端案例错误。

但正如 Marc B 所说,由于 html 最终只是文本,因此最好将其作为单个文本记录存储在 dB 中,然后使用一个程序在需要时进行解析做分析。