Perl use Sprite
2017年10月22日 (日) 13:15時点におけるimported>Webmasterによる版
CSVのファイルをSQLコマンドを使って操作するためのモジュールです。
使い切っていないけど、巨大ファイルの操作ができるのか興味があったので使い方を勉強しています
インストール
標準モジュールでは無いので、CPANからインストールします。
プログラム例
一例ですけど、test.dbにテキスト形式で入っているデータに対して以下のSQLを発行させて、値が帰って来るというモジュールです。(SQLが大文字小文字メチャクチャですけど、これでもコマンドが通るということを言いたいのだと思います)
sElEcT * fRoM $database
wHeRe (Years >= 10) and
(Points >= 20) AnD
(Championships >= 1)
#厳密な構文チェックと警告表示
use strict;
use warnings;
use Sprite;
#実行中のファイルがおいてあるディレクトリまでの絶対パスを得る
use FindBin;
use Data::Dumper;
##初期設定
#$rdbを使ってデータベース操作を行います
my $rdb = new Sprite;
$rdb->set_os('Windows95');
$rdb->set_db_dir($FindBin::Bin.'\\data\\');
$rdb->set_delimiter ('-read' => '\s{2,}|\t');#2回以上の「空白」繰り返しまたはタブにマッチ
$rdb->set_delimiter ('-write' => '::');
#初期設定ここまで
my $database = "test.db";
print STDERR "Performing select ... \n";
my $data = $rdb->sql (<<EOS);
sElEcT * fRoM $database
wHeRe (Years >= 10) and
(Points >= 20) AnD
(Championships >= 1)
EOS
返り値
$data
に返り値が入るのですがイメージが全く分からずにdata dummperとかして解析しました。
イメージはこんな感じのリファレンスのリファレンスになっていて、要素を参照しなければならないです。
今の段階では、SQLで打ち込んだ条件で値が返ってくるというレベルで考えておいてください。プログラム解説は別途行います。