perl+SQlite模組

來源:互聯網
上載者:User

在開發處理大量的資料,且資料隨機性超強悍(比如網路資料)的系統時,我們總會面臨對資料正性的驗證的問題,

尤其是當這些系統並非基於資料庫、但又具有大量的條件查詢的時候,我們常常需要要原始的資料進行統計,再通
過與系統中的值進行比較,來難資料的正確性,但可條件的靈活,以至手工的計算是苦不堪言的,大家還是喜歡將資料
匯入到資料庫系統中再用SQL語句來驗證資料的正確性。

下面這段代碼是為了將幾個資料檔案讀入到SQLITE中,並建立相應的資料庫檔案。當在測試系統中,使用者的許可權受
限的時候,需要將perl相關的一些庫放到自己的目錄下面。
比如我的目錄如下:

dongq@DongQ_Lap ~/workspace/test/perl $ tree imp_exp/

imp_exp
|-- DBD            ---請自己編譯sqlite的perl庫代碼,然後將目錄拷貝過來
|   |-- SQLite.pm
|   `-- getsqlite.pl
|-- auto           ---請自己編譯sqlite的perl庫代碼,然後將目錄拷貝過來
|   `-- DBD
|       `-- SQLite
|           |-- SQLite.bs
|           `-- SQLite.so
|-- createdb.pl           ---自己的指令碼代碼
|-- dbitrace.log
|-- do.clear
|-- dump.db               --產生的資料庫檔案
`-- test.dat                 --匯入的資料

4 directories, 9 files
dongq@DongQ_Lap ~/workspace/test/perl $ 

下面的資料那入的perl代碼

#!/usr/bin/env perl#***************************************# createdb.pl dump1.txt dump2.txt#***************************************use DBI;use strict;use lib qw( ./. );#說明庫的位置die "Usage: ./createdb.pl dump1.txt dump2.txt ..." unless $#ARGV >= 0;#建立資料庫連接my $dbh = DBI->connect( "dbi:SQLite:dbname=./dump.db" );#建立資料表my $create_sth = $dbh->do( "CREATE TABLE arp_record(ar_hrd INTEGER,ar_pro INTEGER,ar_hln INTEGER,ar_pln INTEGER,ar_op INTEGER,ar_sha VARCHAR(17),ar_spa INTEGER,ar_tha VARCHAR(17),ar_tpa INTEGER )" );#建立索引my $index_sth = $dbh->do( "CREATE INDEX idx_ar_sha ON arp_record( ar_sha )" );$index_sth = $dbh->do( "CREATE INDEX idx_ar_spa ON arp_record( ar_spa )" );$index_sth = $dbh->do( "CREATE INDEX idx_ar_tha ON arp_record( ar_tha )" );$index_sth = $dbh->do( "CREATE INDEX idx_ar_tpa ON arp_record( ar_tpa )" );#插入資料my $insert_sth = $dbh->prepare( q{ INSERT INTO arp_record VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ? ) } );#詳細的調試資訊DBI->trace( 1, 'dbitrace.log');$dbh->{ AutoCommit } = 0;my $input_name;foreach $input_name (@ARGV){open ( CSV, "<$input_name" ) or die "Can't open file: $!";while( <CSV> ){chomp;my( $ar_hrd, $ar_pro, $ar_hln, $ar_pln, $ar_op, $ar_sha, $ar_spa, $ar_tha, $ar_tpa ) = split /,/;$insert_sth->bind_param( 1, $ar_hrd );$insert_sth->bind_param( 2, $ar_pro );$insert_sth->bind_param( 3, $ar_hln );$insert_sth->bind_param( 4, $ar_pln );$insert_sth->bind_param( 5, $ar_op );$insert_sth->bind_param( 6, $dbh->quote( $ar_sha ) );$insert_sth->bind_param( 7, $ar_spa );$insert_sth->bind_param( 8, $dbh->quote( $ar_tha) );$insert_sth->bind_param( 9, $ar_tpa );$insert_sth->execute or die $dbh->errstr;}}$dbh->commit or die $dbh->errstr;close ( CSV );$dbh->disconnect;exit;

呵呵,像上面的這種例子網上到處都是:)
參考: <<perl DBI 編程>>一書

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.