データ流し込みプロフラムの例
0001: #! /usr/bin/perl 0002: # ------------------------------------------------------------- # 0003: # loadBirdList.pl 0004: # =============== 0005: # option : user=<ユーザー名> 0006: # password=<パスワード> 0007: # hostname=<サーバーホスト名> 0008: # dbpath=<データベースファイルのパス> 0009: # encode=<文字セットエンコーディング> 0010: # 0011: # $Id: loadBirdList.pl,v 1.10 ########## $ 0012: # ------------------------------------------------------------- # 0013: use strict; 0014: use IBPerl; 0015: use lib "/usr/lib/perl5/5.8.0/i386-linux-thread-multi"; 0016: use Time::HiRes; 0017: 0018: my($elapsed_t1)=&Time::HiRes::time(); 0019: my(%param); 0020: $param{user}="SYSDBA"; 0021: $param{password}="********"; 0022: $param{hostname}="localhost"; 0023: $param{dbpath}="/DB/birds/birds.fdb"; 0024: $param{encode}="EUCJ_0208"; 0025: for (@ARGV){ 0026: my($k, $v)=split("=", $_); 0027: $param{$k}=$v; 0028: } 0029: my($DB)=IBPerl::Connection->new(Path=>"$param{hostname}:$param{dbpath}", 0030: User=>$param{user}, 0031: Password=>$param{password}, 0032: Charset=>$param{encode}); 0033: my($trans)=IBPerl::Transaction->new(Database=>$DB); 0034: my($cnt, $insO, $insF, $insG, $insS)=(0, 0, 0, 0, 0); 0035: $|=1; 0036: while (<STDIN>){ 0037: chomp; 0038: # 空行スキップ 0039: next if ($_=~/^$/); 0040: # // で始まる行は無視 0041: next if (/^\/\//); 0042: $cnt++; 0043: print("o") if (($cnt % 50)==0); 0044: print(" $cnt\n") if (($cnt % 1000)==0); 0045: # シングルクォートのエスケープ 0046: s/\'/\'\'/g; 0047: # カンマ区切りを分解 0048: # フィールド 0:種の学名 1:種の英名 2:種の和名 3:属の学名 4:属の和名 0049: # 5:科の学名 6:科の和名 7:目の学名 8:目の和名 0050: my(@f)=split(","); 0051: # SQL 文生成 0052: my($sql)="EXECUTE PROCEDURE PSGFO_CHKINSERT(0,'". 0053: join("','", ($f[7],$f[8],$f[5],$f[6],$f[3],$f[4],$f[0],$f[2],$f[1],uc($f[1]))). 0054: "')"; 0055: # Stored Procedure 実行 0056: my($st)=IBPerl::Statement->new(Transaction=>$trans, SQL=>$sql); 0057: $st->execute(); 0058: # Retern 値取得 0059: my(%hash); 0060: $st->fetch(\%hash); 0061: $insO+=$hash{INSORDER}; 0062: $insF+=$hash{INSFAMILY}; 0063: $insG+=$hash{INSGENUS}; 0064: $insS+=$hash{INSSPECIES}; 0065: } 0066: $trans->commit(); 0067: $DB->disconnect(); 0068: my($elapsed_t2)=&Time::HiRes::time(); 0069: 0070: printf("\n%d %d %d %d %d %6.3f sec. elapsed\n", 0071: $insO, $insF, $insG, $insS, $cnt, $elapsed_t2-$elapsed_t1); 0072: exit(0);
この HTML を検査する。( XHTML 1.0 Strict で書かれています )
Another HTML Lint Gateway ( Mirrored by htmllint.oosato.org )