oldwain随便写 http://oldwain.itpub.net/ <a href="http://oldwain.itpub.net">oldwain随便写</a>

用oracle分析itpub徽章(1) -- 获取数据

上一篇 / 下一篇  2006-09-12 00:00:00 / 个人分类:Oracle

本文试图通过使用Oracle的utl_http package来抓取itpub的徽章列表,并通过对获取的数据进行一些简单的查询,模拟投资市场来分析这些徽章的价格趋势。


1cT&ipWYT3Q|c0

step1: 在开始获取数据前, 先建立相应的表,用来存放数据:

create table medals (
snaptime date, -- 数据抓取时间
item varchar2(20), -- 徽章id
userid varchar2(10), -- itpub用户id
username varchar2(100), -- itpub用户名
getdate date -- 得到徽章日期
);
create table medalname (
medalclass varchar2(10), -- 徽章类别
medalid varchar2(10), -- 徽章id
medalname varchar2(30) -- 徽章名称
);

step2: 创建一个pkg_medals package, 用于抓取数据:

create or replace package pkg_medals is
procedure get_medallist(medalid varchar2, snaptime date) ;
procedure getanimals(snaptime date default sysdate) ;
procedure getflowers(snaptime date default sysdate) ;
procedure getgems(snaptime date default sysdate) ;
procedure getfishes(snaptime date default sysdate) ;
procedure getbugs(snaptime date default sysdate) ;
procedure getbees(snaptime date default sysdate) ;
procedure getspecials(snaptime date default sysdate);
procedure getclocks(snaptime date default sysdate);
procedure getpens(snaptime date default sysdate);

procedure getall(snaptime date default sysdate) ;
end pkg_medals;

包体限于篇幅,不在此列出, 可以在此下载

step3: 执行抓取过程:

set serveroutput on
exec pkg_medals.getall

如果只想抓取生肖的信息,可以:

exec pkg_medals.getanimals

当然,你也可以通过建立job, 每日定时进行抓取。

程序可改进之处:

1. 合并后的内容用varchar2存放, 所以不能超过32768, 好的办法是取消合并的步骤,对每个piece去处理,然后形成行。

2. 为了思路清晰, 用了很多遍循环, 会降低性能, 可以通过改写减少循环次数。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-16  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 2372
  • 日志数: 1042
  • 建立时间: 2007-11-28
  • 更新时间: 2008-02-22

RSS订阅

Open Toolbar