我试图在MySQL数据库中存储完整的HTML页面。
这是我的数据库架构:
我认为这个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
标记。
这个查询什么也没给我。
答案 0 :(得分:3)
我的假设是你已经进入HTML的这种极端分裂/存储,因为你想使用数据库工具以某种方式分析标签的使用?
我和Marc B在一起,数据库并不是解决这类问题的最好方法......
如果您觉得必须,那么您可能希望在存储它之前使用某种原始HTML 的预解析器/验证器,以确保html良好在将其存储到像这样的一组关系表之前形成并有效。这将大大减少角落案例错误。
但是就像Marc B说的那样,因为html最终只是文本,所以最好将它作为单个文本记录存储在你的dB中,然后使用一个程序在你想要进行分析时进行解析。 / p>