為了適應不同專案對不同感興趣屬性的解析儲存,資料儲存結構採用縱向的屬性列表方式,即乙個url頁面多個屬性儲存多條記錄方式,並且按照text,html,data,num幾大典型型別分別對應儲存。
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
Mysql 儲存過程解析
儲存過程語法 create procedure sp name proc parameter characteristic.routine body 1 其中proc parameter的規定如下 proc parameter in out inout param name type in 表示當我...
MySQL資料型別解析
mysql支援大量的列型別,它可以被分為3類 數字型別 日期和時間型別以及字串 字元 型別。本節首先給出可用型別的乙個概述,並且總結每個列型別的儲存需求,然後提供每個類中的型別性質的更詳細的描述。概述有意簡化,更詳細的說明應該考慮到有關特定列型別的附加資訊,例如你能為其指定值的允許格式。由mysql...
mysql資料型別解析
mysql支援所有標準sql中的數值型別,其中包括 嚴格資料型別 integer,smallint,decimal,numberic 近似值資料型別 float,real,double presision 擴充套件後增加了tinyint,mediumint,bigint這3種長度不同的整形 並增加了...