perl利用內存使用sql語句

 大家好!最近又有了一些模塊用法的心得,那就是利用模塊使你的內存變成一個虛擬的數據庫模式,使你可以在沒有數據庫的情況下,將txt文件的數據進行 sql語句處理,感覺很新鮮吧,不過這個不用感到驚訝,Perl一直是很完美的,哈哈,那我們就來看看這個神奇吧!

需要安裝 模塊:

SQl::Library;
DBI 

 

下面是程序(比較文件1和文件2中的關鍵字段,比如歌曲比歌曲,歌手比歌手,如果相同就輸出):

#!/usr/bin/perl
use SQl::Library;
use DBI;
my $data1='T';
my $data2='R';
my $dbh = DBI->connect('dbi:AnyData(RaiseError=>1):');
$table='students';
$format='Tab';   #文件是以製表符分割的
$file='d:/test.txt';  #文件1
$flags = { col_names => 'a,b,c,d,e,f,g,h'}; #文件有幾個表字段
$dbh->func( $table, $format, $file, $flags, 'ad_import');

$table1='students1';
$format1='Tab';  #文件是以製表符分割的
$file1='d:/test2.txt'  #文件2
flags1 = { col_names => 'a,b,c,d,e,f,g,h,i'}; #文件有幾個表字段
$dbh->func( $table1, $format1, $file1, $flags1, 'ad_import');
my $tel_sth=$dbh->prepare("select b.*,a.i from students1 a,students b
where a.f=b.c and a.g=b.d");   #調用sql語句的方式進行查詢,在我的數據裏面是 歌曲和歌手2個字段進行的查詢

$tel_sth->execute;  #執行語句
while (my @ref = $tel_sth->fetchrow_array()) {
   chomp(@ref);
my $file_data = join "/t", @ref;
print '這些數據是歌曲和歌手相同的'."$file_data/n"


}

 

 

  這樣就可以很輕鬆的將數據進行整理了,對於有時候無法使用數據庫進行處理的時候這是個不錯的選擇。

但是還是需要涉及到性能問題的,因爲這是個模仿數據庫在內存上進行的操作,在速度上面是不可能和數據庫的相比,而且佔用資源比較大,當你的文件很大的時候,可能根本就沒有辦法去運行了,因此只適合數據量比較小的來運用了,可以看自己的內存和數據等來合理運用了啊,就說到着了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章