#!perl
use strict;
use Text::CSV;
use DBD::Oracle;
my $csv = Text::CSV->new ( { binary => 1 } )
or die "Cannot use CSV: ".Text::CSV->error_diag ();
my $dbh = dbh(); # connect
my $SQL1 = "INSERT INTO TAB1 (sample_date, server, first, n1, n2)
VALUES (?,?,?,?,?)";
my $sth1 = $dbh->prepare($SQL1);
my $SQL2 = "INSERT INTO STATUS (sample_date,server,csv_file,row_count,
+status)
VALUES (sysdate,?,?,?,?)";
my $sth2 = $dbh->prepare($SQL2);
my @csvFile = ('1.csv','2.csv','3.csv');
for my $file (@csvFile){
insertRecords($file);
}
$dbh->disconnect;
sub insertRecords {
my $file = shift;
print "Working under $file\n";
open my $fh,'<',$file or die "$file : $!";
my $status = "SUCCESS";
my $server;
my $rc = 0;
while (my $row = $csv->getline ($fh)){
++$rc;
$server = $row->[1];
print join ",",@$row[0..4],"\n";
if ( $sth1->execute(@$row[0..4]) ){
# ok
} else {
$status = "FAILURE";
last;
}
};
if ($status eq 'FAILURE'){
$dbh->rollback;
$rc = 0;
print "ERROR - Rolled back $file\n";
}
$sth2->execute($server,$file,$rc,$status);
$dbh->commit;
close $fh;
}
# connect
sub dbh {
my $host = "localhost";
my $sid = 'xe';
my $user = '';
my $pwd = '';
my $dsn = "dbi:Oracle:host=$host;sid=$sid";
my $dbh = DBI->connect($dsn, $user, $pwd,
{ AutoCommit => 0,
}) or die "$!";
return $dbh
}
poj |