解析資料存放區MySQL

來源:互聯網
上載者:User

標籤:category   資料庫   記錄   mysql   項目   java   

       為了適應不同項目對不同感興趣屬性的解析儲存,資料存放區結構採用縱向的屬性列表方式,即一個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;

  650) this.width=650;" src="http://img.mp.itc.cn/upload/20160706/e4d62fb80ced45759643da9ee15a08f3_th.jpg" style="border:0px;margin:0px;padding:0px;font-size:0px;" />

  為了一般在業務系統擷取同一個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

  650) this.width=650;" src="http://img.mp.itc.cn/upload/20160706/1a8a96424466479180c3333a69d7b528_th.jpg" style="border:0px;margin:0px;padding:0px;font-size:0px;" />


本文出自 “11247808” 部落格,轉載請與作者聯絡!

解析資料存放區MySQL

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.