博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于的MySQL纵向属性列表转换为横向字段列表脚本
阅读量:5746 次
发布时间:2019-06-18

本文共 1596 字,大约阅读时间需要 5 分钟。

  hot3.png

内容摘自 抓取数据持久化处理设计

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

在此输入图片描述

转载于:https://my.oschina.net/s2jh/blog/394536

你可能感兴趣的文章
lr场景运行报错的解决方法
查看>>
如何实现4分频?
查看>>
Cordova4.0 系列 -- 基本环境搭建(1)
查看>>
muduo网络图书馆评测
查看>>
VC获得window操作系统版本号, 获取操作系统位数
查看>>
新浪微薄份额2(分享)
查看>>
AndroidStudio调用so文件
查看>>
企业退信的常见问题?
查看>>
【转】Android自动化测试之MonkeyRunner录制和回放脚本(四)
查看>>
(转)如何判断链表中是否有环
查看>>
Android正在使用Handler实现消息分发机制(零)
查看>>
Exchange Cards(dfs)
查看>>
[转载]Linux Bond的原理及其不足
查看>>
如何在面试中发现优秀程序员
查看>>
Serial Wire Viewer (SWV)
查看>>
2015腾讯笔试大题
查看>>
hive的udf制剂
查看>>
收集一些特殊的符号
查看>>
VisualC++2012 Compiler Warning C4566
查看>>
Edit Distance -- LeetCode
查看>>