zoukankan      html  css  js  c++  java
  • 解析数据存储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

      

    技术分享:www.kaige123.com

  • 相关阅读:
    C++11之function模板和bind函数适配器
    C++11之右值引用(三):使用C++11编写string类以及“异常安全”的=运算符
    C++11之右值引用(二):右值引用与移动语义
    C++11之右值引用(一):从左值右值到右值引用
    C++Singleton的DCLP(双重锁)实现以及性能测评
    信息熵
    ip访问网站和localhost访问网站中top使用
    方差与协方差
    js获取file控件的完整路径(上传图片预览)
    对线性回归,logistic回归和一般回归
  • 原文地址:https://www.cnblogs.com/kaige123/p/5890648.html
Copyright © 2011-2022 走看看