首页 > mysql教程 > 正文

解析数据存储MySQL

转载 2019-01-26 0 287

原标题:解析数据存储MySQL

为了适应不同项目对不同感兴趣属性的解析存储,数据存储结构采用纵向的属性列表方式,即一个url页面多个属性存储多条记录方式,并且按照text,html,data,num几大典型类型分别对应存储。

创建UTF-8字符集的nutch数据库,并执行表初始化脚本,参考DDL:

CREATE TABLE `crawl_data` (

`url` varchar(255) NOT NULL,

`code` varchar(255) NOT NULL,

`name` varchar(255) DEFAULT NULL,

`category` varchar(255) DEFAULT NULL,

`order_index` int(255) DEFAULT NULL,

`fetch_time` datetime NOT NULL,

`text_value` text, `html_value` text,

`date_value` datetime DEFAULT NULL,

`num_value` decimal(18,2) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

为了一般在业务系统获取同一个url的多个属性或友好查询显示,参考如下MySQL脚本实现把纵向的属性列表属性转换为横向的多列显示模式。网上有 相关参考脚本大多是基于数字字段sum汇总等模式的纵转横SQL脚本,本项目需求是单一的基于字符串信息转换,经过一段摸索最后找到基于 GROUP_CONCAT可以实现:

SELECT url ,fetch_time,

GROUP_CONCAT(CASE WHEN code = 'domain' THEN text_value ELSE null END) AS `domain`,

GROUP_CONCAT(CASE WHEN code = 'name' THEN text_value ELSE null END) AS `name`,

GROUP_CONCAT(CASE WHEN code = 'brand' THEN text_value ELSE null END) AS `brand`,

GROUP_CONCAT(CASE WHEN code = 'category' THEN text_value ELSE null END) AS `category`,

GROUP_CONCAT(CASE WHEN code = 'purpose' THEN text_value ELSE null END) AS `purpose`,

GROUP_CONCAT(CASE WHEN code = 'price' THEN num_value ELSE null END) AS `price`,

GROUP_CONCAT(CASE WHEN code = 'refPrice' THEN num_value ELSE null END) AS `refPrice`,

GROUP_CONCAT(CASE WHEN code = 'primaryImage' THEN text_value ELSE null END) AS `primaryImage` FROM crawl_data GROUP BY url,fetch_time

---更多Java学习资料可关注微信公众号:kaigexuetang_com(长按可复制关注)

相关文章


  • mysql 数据库中的三种判断是否包含总结
  • zblog写作:ms-sql和mysql数据库哪个更加实用?
  • JDBC 之:MySQL 以及相关软件的使用基础
  • mysql和Oracle获取数据库的图片的差异
  • linux运维之mysql连接报ERROR 1042
  • 推荐一款稳定、高效的MySQL数据库备份利器
  • MySQL从零开始:04 表的增删改查(一)
  • 「最全总结」各种启动MySQL数据库错误分析(一)
  • 作者信息