前言
这是我曾经做用户统计行为分析时,写过的存储过程,将从网站通过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.以此博客相关的博客文章推荐