DBI:Oracle
2013年4月9日 PerlPerlを使用してDB(Oracle)に接続する際に、一々処理を書くのが面倒だったので設定ファイルを外部化させた上で容易に接続出来るようにサブルーチンを作成した。
メインはこうした上で、下記のサブルーチンには設定ファイルを渡す。
設定ファイルは以下の通り。
具体的には下記の通り―
これでメインの $dbh にはデータベース・ハンドルが返ってくるので、後は実際に処理を記述すればいい。
メイン処理
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $config_file = qq|./config.ini|;
my $dbh = &DB_Connect($config_file);
メインはこうした上で、下記のサブルーチンには設定ファイルを渡す。
サブルーチン
sub DB_Connect{
my %Config_Hash =();
my $return = qq||;
if(-f $_[0]){
open(FH,$_[0]);
while(){
chomp($_);
my ($key,$value) = split(/=/,$_);
$Config_Hash{’HOST’} = $value if($key eq ’HOST’);
$Config_Hash{’PORT’} = $value if($key eq ’PORT’);
$Config_Hash{’SID’} = $value if($key eq ’SID’);
$Config_Hash{’SERVICE_NAME’} = $value if($key eq ’SERVICE_NAME’);
$Config_Hash{’UserID’} = $value if($key eq ’UserID’);
$Config_Hash{’Password’} = $value if($key eq ’Password’);
}
close(FH);
$return = DBI->connect(qq|DBI:Oracle:HOST=$Config_Hash{’HOST’};PORT=$Config_Hash{’PORT’};SID=$Config_Hash{’SID’};SERVICE_NAME=$Config_Hash{’SERVICE_NAME’}|,qq|$Config_Hash{’UserID’}|,qq|$Config_Hash{’Password’}|);
if(!defined($return)){
$return = Error(qq|DB connection failed.| . qq|$DBI::errstr|);
}
}else{
$return = qq|File $_[0] not found.|;
}
return $return;
}
設定ファイルは以下の通り。
config.ini の内容
HOST=[Host]
PORT=[Port Number]
SID=[SID]
SERVICE_NAME=[service name]
UserID=[User ID]
Password=[Pssword]
具体的には下記の通り―
設定ファイルの例
HOST=127.0.0.1
PORT=1521
SID=ORCL
SERVICE_NAME=my_service_name
UserID=user_name
Password=passwd
これでメインの $dbh にはデータベース・ハンドルが返ってくるので、後は実際に処理を記述すればいい。
コメント