sub getOracleRowHash{
my $odbh = shift;
my $osth = $odbh->prepare("select pk from emp");
$osth->execute();
my $tableref;
while(my $row = $osth->fetchrow_hashref()){
no warnings;
$tableref->{$row->{'pk'}} = $row;
}
return $tableref;
}
####
my $oracleTableHash = getOracleRowHash($odbh);
##
##
my @vnames=qw/
pk
File_name
Cl_file_size_in_bytes
Cl_checksum
CL_created_date_time
Status
Mn_file_size_in_bytes
Mn_checksum
Failed_retries
Processed_date_time
ftp_acknowledgement
ohf_processing_status
ohf_processing_datetime
ohf_total_rows
ohf_failed_rows
ohf_processed_rows
hdfs_processing_status
hdfs_processing_datetime
hdfs_checksum
hdfs_file_size_in_bytes
/;
my $vlist=join(',',@vnames);
my $table='cloverleaf_ingestion';
my @qs=map{'?'} @vnames;
my $q=join(',',@q);
my $query = "select $vlist from $table";
my $ssth = $sdbh->prepare($query) || die "Error in prepare to mysql: $DBI::errstr\n";;
my $insertquery = "insert into $table($vnames) values($q)";
my $osth = $odbh->prepare($insertquery) || die "Error in prepare: $DBI::errstr";
$osth->begin_work;
$ssth->execute() || die "Error in execute to mysql: $DBI::errstr\n";;
my $commit_ct =500;
my $inserts=0;
while(my @row = $ssth->fetchrow_array()){
if(!(exists($oracleTableHash->{$row[0]}))){
$inserts++;
if ($inserts>$commit_ct){
$inserts=1;
$osth->commit or die 'something';
$osth->begin_work;
}
$osth->execute(@row);
}
}
$osth->commit or die 'something';