前言
这是我曾经做用户统计行为分析时,写过的存储过程,将从网站通过js脚本抓取到的数据,通过存储过程的方式定时写入到数据库中,存储过程如下。
目录
- 存储过程
- 调用存储过程
- 以此博客相关的博客文章推荐
1.存储过程
create or replace procedure pro_analyse(
visitLocalTime in varchar2, --访问时间,
configId varchar2, --唯一ip
title varchar2,--页面标题
urlRef varchar2,--引用页面url
url varchar2,--页面url
visitorCountVisits number,--回访次数
configOs varchar2,--操作系统
configBrowserName varchar2,--浏览器名称
configBrowserVersion varchar2,--浏览器版本
configResolution varchar2,--分辨率
configPdf varchar2,--是否支持pdf
configFlash varchar2,--是否支持flash
configJava varchar2,--是否支持java
configDirector varchar2,--是否支持director
configQuicktime varchar2,--是否支持quicktime
configRealpayer varchar2,--是否支持realplayer
configWindowMedia varchar2,--是否支持windowmedia
configGears varchar2,--是否支持gears
configSilerlight varchar2,--是否支持Slierlight
configCookie varchar2 ,--是否支持cookie
locationBrowserLang varchar2,--浏览器语言
locationIp varchar2,--访客ip
isRegister varchar2,--是否为注册用户(0,1)
userId varchar2, --用户id
ipAddress varchar2,--根据ip获得用户地址
ipAreas varchar2--根据ip获取用户通信地址
)
is
visitTotalActions number;--访问次数;
idvisit2 varchar2(256);--访客动作id
id number(18);--访客动作主键
link_id number(18);
begin
select
t.visit_total_actions,t.idvisit into visitTotalActions,idvisit2
from
w_log_visit t
where
to_char(t.visit_first_action_time, 'yyyy-mm-dd hh24:mi:ss') >= to_char(sysdate-1,'yyyy-mm-dd')||'23:59:59'
and
t.config_id = configId;
select seq_cms_all.nextval into id from dual;
if visitTotalActions > 0 then--更新w_log_visit
update
w_log_visit a
set
a.visit_total_actions=a.visit_total_actions+1,--访问次数+1
a.visit_exit_idaction_url=url,--退出页面url
a.visit_exit_idaction_name=title,--退出页面标题
a.visit_last_action_time=sysdate
where a.idvisit=idvisit;
else
dbms_output.put_line('插入w_log_visit');
INSERT INTO W_LOG_VISIT
(IDVISIT,
IDVISITOR,
VISITOR_LOCALTIME,
VISITOR_RETURNING,
VISITOR_COUNT_VISITS,
VISITOR_DAYS_SINCE_LAST,
VISITOR_DAYS_SINCE_ORDER,
VISITOR_DAYS_SINCE_FIRST,
VISIT_FIRST_ACTION_TIME,
VISIT_LAST_ACTION_TIME,
VISIT_EXIT_IDACTION_URL,
VISIT_EXIT_IDACTION_NAME,
VISIT_ENTRY_IDACTION_URL,
VISIT_ENTRY_IDACTION_NAME,
VISIT_TOTAL_ACTIONS,
VISIT_TOTAL_TIME,
VISIT_GOAL_CONVERTED,
VISIT_GOAL_BUYER,
REFERER_TYPE,
REFERER_NAME,
REFERER_URL,
REFERER_KEYWORD,
CONFIG_ID,
CONFIG_OS,
CONFIG_BROWSER_NAME,
CONFIG_BROWSER_VERSION,
CONFIG_RESOLUTION,
CONFIG_PDF,
CONFIG_FLASH,
CONFIG_JAVA,
CONFIG_DIRECTOR,
CONFIG_QUICKTIME,
CONFIG_REALPLAYER,
CONFIG_WINDOWSMEDIA,
CONFIG_GEARS,
CONFIG_SILVERLIGHT,
CONFIG_COOKIE,
LOCATION_IP,
LOCATION_BROWSER_LANG,
LOCATION_COUNTRY,
LOCATION_CONTINENT,
CUSTOM_VAR_K1,
CUSTOM_VAR_V1,
CUSTOM_VAR_K2,
CUSTOM_VAR_V2,
CUSTOM_VAR_K3,
CUSTOM_VAR_V3,
CUSTOM_VAR_K4,
CUSTOM_VAR_V4,
CUSTOM_VAR_K5,
CUSTOM_VAR_V5,
LOCATION_PROVIDER)
VALUES
(id,--主键 取序列自动增长
userId, --IDVISITOR 咱存放userid
to_char(visitLocalTime,'hh24:mm:si'),--当前访问时间
'0',--visitor_returning 是否回访---暂时没有统计
visitorCountVisits,--回访次数visitor_count_visits,
0,--距离最后一次访问相差天数visitor_days_since_last 暂无统计,
0,--visitor_days_since_order,
0,--距离第一次访问相差的天数 visitor_days_since_first,
to_date(to_char(visitLocalTime,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD HH24:MI:SS'),--第一次访问时间 visit_first_action_time
to_date(to_char(visitLocalTime,'yyyy-mm-dd hh24:mi:ss'),'YYYY-MM-DD HH24:MI:SS'),--最后一次访问时间 visit_last_action_time
url,--退出网站url visit_exit_idaction_url,
title,--退出网站name visit_exit_idaction_name,
url,--进入网站url visit_entry_idaction_url,
title,--进入网站name visit_entry_idaction_name,
1,--访问次数 visit_total_actions,
0,--访问总时长 visit_total_time 暂无统计,
0,--visit_goal_converted,
0,--visit_goal_buyer,
1,--referer_type,
0,--referer_name,
urlRef,--referer_url 引用页面url,
'',--referer_keyword,
configId,--config_id,
configOs,--config_os 操作系统,
configBrowserName,--#config_browser_name#, 浏览器名称
configBrowserVersion,--#config_browser_version#,
configResolution,--#config_resolution#,
configPdf,--#config_pdf#,
configFlash,--#config_flash#,
configJava,--#config_java#,
configDirector,-- #config_director#,
configQuicktime,--#config_quicktime#,
configRealpayer,--#config_realplayer#,
configWindowMedia,--#config_windowsmedia#,
configGears,--#config_gears#,
configSilerlight,--#config_silverlight#,
configCookie,--#config_cookie#,
locationIp,--#location_ip#,
locationBrowserLang,--#location_browser_lang#,
'',--#location_country#,
'',--#location_continent#,
'',--#custom_var_k1#,
'',--#custom_var_v1#,
ipAddress,--#custom_var_k2#,
ipAreas,--#custom_var_v2#,
'',--#custom_var_k3#,
'',--#custom_var_v3#,
'',--#custom_var_k4#,
'',--#custom_var_v4#,
'',--#custom_var_k5#,
'',--#custom_var_v5#,
'cn');--#location_provider#
end if;--插入w_log_link_visit_action
select seq_cms_all.nextval into link_id from dual;
dbms_output.put_line('插入w_log_link_visit ');
INSERT
INTO
W_LOG_LINK_VISIT_ACTION
(IDLINK_VA,
IDVISITOR,
SERVER_TIME,
IDVISIT,
IDACTION_URL,
IDACTION_URL_REF,
IDACTION_NAME,
IDACTION_NAME_REF,
TIME_SPENT_REF_ACTION)
VALUES(
link_id,--#idlink_va#,主键
userId,--#idVisitor#,
to_date(to_char(visitLocalTime,'yyyy-mm-dd HH:mm:ss'),'YYYY-MM-DD HH24:MI:SS'),--#serverTime#
id,--#idVisit#,
url,--#idActionUrl#,
urlRef,--#idActionUrlRef#,
title,--#idActionName#,
'',--#idActionNameRef#,
0);--#timeSpentRefAction# 网站停留时间
commit;
EXCEPTION
when dup_val_on_index then
dbms_output.put_line('对于数据库表中的某一列,该列已经被限制为唯一索引,程序试图存储两个重复的值 ');
WHEN OTHERS THEN
dbms_output.put_line('异常 ');
ROLLBACK;
end;
2.调用存储过程:
call pro_analyse(
'2013-06-05 13:09:56',--visitLocalTime in varchar2, --访问时间,
'108524137',--configId varchar2, --唯一ip
'95598首页',--title varchar2,--页面标题
'www.baidu.com',--urlRef varchar2,--引用页面url
'index.html',--url varchar2,--页面url
'0',--visitorCountVisits number,--回访次数
'windows',--configOs varchar2,--操作系统
'google',--configBrowserName varchar2,--浏览器名称
'1.9',--configBrowserVersion varchar2,--浏览器版本
'1024*768',--configResolution varchar2,--分辨率
1,--configPdf varchar2,--是否支持pdf
1,--configFlash varchar2,--是否支持flash
1,--configJava varchar2,--是否支持java
1,--configDirector varchar2,--是否支持director
1,--configQuicktime varchar2,--是否支持quicktime
1,-- configRealpayer varchar2,--是否支持realplayer
1,-- configWindowMedia varchar2,--是否支持windowmedia
1,-- configGears varchar2,--是否支持gears
1,--configSilerlight varchar2,--是否支持Slierlight
1,--configCookie varchar2 ,--是否支持cookie
'cn',--locationBrowserLang varchar2,--浏览器语言
'10.85.24.137',--locationIp varchar2,--访客ip
'1',--isRegister varchar2,--是否为注册用户(0,1)
'2013060512142123',--userId varchar2, --用户id
'北京市',--ipAddress varchar2,--根据ip获得用户地址
'电信'--ipAreas varchar2--根据ip获取用户通信地址
);
3.以此博客相关的博客文章推荐