DBD::CSV を使うと、csvファイルをRDBとして扱うことができます。
「DBD::〜」という名前からも分かるとおり、使い方はDBDと同じです。
例えば、次のように接続?すると、指定したdir以下にあるcsvファイルをtableとして扱うことができます。
また、切断方法?もDBDと同様です。
#!/usr/local/bin/perl use strict; use utf8; use DBI; use Data::Dumper; main(); sub main { my $dbh = DBI->connect ("dbi:CSV:",undef,undef, {f_dir =>".", f_ext =>".csv", f_encoding =>"utf8", csv_eol =>"\n", csv_sep_char =>",", csv_quote_char =>'"', csv_escape_char =>'"', csv_class =>"Text::CSV_XS", RaiseError =>1,}) or die $DBI::errstr; my $sql =<<EOF; select * from soukanjo where kamoku_group = '内緒' EOF my $sth = $dbh->prepare($sql); print STDERR Dumper($sth); $sth->execute(); while(my $row = $sth->fetchrow_hashref()){ print STDERR Dumper($row); } $dbh->disconnect; }
DBD::CSVで接続したdir以下にあるcsvファイルは、ファイル名がそのままテーブル名になります。
DBI->connect()時のf_encodingで、Encode::decode()と同様の効果アリ
DBI->connect()時にf_encodingを指定すると、csvの読込時にperlの内部文字コードに変換してくれるみたい。
AutoCommit -> Always on
cpanに記載されている通りです
http://search.cpan.org/perldoc?DBD::CSV