畢業設計二:日誌匯入

xyzlotus發表於2008-05-11

畢業設計二:日誌匯入

 

資料來源為廣西大學網站日誌。單個檔案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\廣西大學網路日誌\www.gxu.edu.001'

infile 'F:\畢業設計\datasets\廣西大學網路日誌\www.gxu.edu.002'

infile 'F:\畢業設計\datasets\廣西大學網路日誌\www.gxu.edu.003'

infile 'F:\畢業設計\datasets\廣西大學網路日誌\www.gxu.edu.004'

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章