ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 毕业设计二:日志导入

毕业设计二:日志导入

原创 Linux操作系统 作者:xyzlotus 时间:2008-05-11 16:55:11 0 删除 编辑

毕业设计二:日志导入

 

数据源为广西大学网站日志。单个文件100M,大约有100万条记录。为了保证能得到一定数量的会话,所以导入四个文件,总共大约400M,包含有400万条记录。

 

由于日志格式和原来测试的有些不同,再加上数据量比较大,所以这次处理比较复杂。

日志格式如下:

210.36.21.101 - - [12/Feb/2007:09:43:45 +0800] "GET / HTTP/1.1" 200 38148

210.36.21.101 - - [12/Feb/2007:09:43:45 +0800] "GET /040310/text.css HTTP/1.1" 304 -

210.36.21.101 - - [12/Feb/2007:09:43:45 +0800] "GET /text.css HTTP/1.1" 304 –

观察日志格式后,发现可以用空格来分隔每个字段。不过这样的话,将会有些分散。比如日期与时间会被分成两列:[12/Feb/2007:09:43:45 +0800]。而URL会被分为三列。只能全部以字符的形式导入数据库,然后在进行一些格式转换工作,比如日期等。

 

1、  创建表

create table weblog

(

 cip  varchar2(20),

 ident varchar2(10),

 authorized_user varchar2(10),

 access_time varchar2(30),

 time_zone varchar2(10),

 method varchar2(20),

 url varchar2(500), //之前测试的时候,发现有些URL相当长,所以应将该字段的值设大。

 protocol varchar2(50),

 status varchar2(10),

 req_bytes varchar2(100)

);

2、  创建控制文件

//input.ctl

load data

infile 'F:\毕业设计\datasets\广西大学网络日志\'

infile 'F:\毕业设计\datasets\广西大学网络日志\'

infile 'F:\毕业设计\datasets\广西大学网络日志\'

infile 'F:\毕业设计\datasets\广西大学网络日志\'

replace into table weblog

fields terminated by X'09'

(cip                TERMINATED BY WHITESPACE,

ident                     TERMINATED BY WHITESPACE,

authorized_user      TERMINATED BY WHITESPACE,

access_time           TERMINATED BY WHITESPACE,

time_zone              TERMINATED BY WHITESPACE,

method                  TERMINATED BY WHITESPACE,

url                        TERMINATED BY WHITESPACE,

protocol         TERMINATED BY WHITESPACE,

status                    TERMINATED BY WHITESPACE,

req_bytes)

 

3、使用SQL*LOADER导入

在命令行,使用如下语句:

sqlldr userid=dm/oracle@XYZLOTUS control=F:\毕业设计\DataPreparation\input.ctl log=F:\毕业设计\DataPreparation\weblog.log errors=10000

由于在导入的时候会出现一些错误,比如有些字段太长而被拒绝写入表中。所以应该注意设置errors为一个比较高的值,以免错误数量超过允许的值而中止数据继续导入。如果不显式设置,默认为50。考虑到本实验数据记录庞大,所以我设为errors=10000

4、  通过日志记录来查看信息

在导入过程中,出现的错误以及导入的相关信息会保存在LOG文件中。

//weblog.log

WEBLOG:

4213740 加载成功

由于数据错误, 407 没有加载。

由于所有 WHEN 子句失败, 0 没有加载。

由于所有字段都为空的, 0 没有加载。

 

 

为结合数组分配的空间:   165120字节(64行)

读取   缓冲区字节数: 1048576

 

跳过的逻辑记录总数:        0

读取的逻辑记录总数:  4214147

拒绝的逻辑记录总数:      407

废弃的逻辑记录总数:        0

 

从星期五 4  25 08:14:40 2008开始运行

在星期五 4  25 08:57:20 2008处运行结束

 

经过时间为: 00: 42: 39.39

CPU 时间为: 00: 04: 11.65

5、  登录SQL*PLUS

SQL> select count(*) from weblog;

 

  COUNT(*)

----------

   4213740

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12443821/viewspace-265032/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-17

  • 博文量
    41
  • 访问量
    81082