my $e = eval( $p );
####
$stmt = qq(INSERT INTO ACCU_USAGE VALUES ($Mobil ...
...
$stmt = qq(INSERT INTO ACCU_USAGE VALUES ($MobileNumber, ...
...
$rv = $dbh->do($stmt) or die $DBI::errstr;
...
####
my $sql = $dbh->prepare( q[ INSERT INTO ACCU_USAGE VALUES( ?, ?, ?, ?, ?, ?, ?, ? ) ] )
or die $DBI::errstr;
####
$rv = $sql->execute(
$MobileNumber,
$value->{'subscriberGroupName'},
$value->{'absoluteAccumulated'}->{'counters'}->[0]->{'bidirVolume'},
$value->{'absoluteAccumulated'}->{'counters'}->[0]->{'name'},
$value->{'selected'},
$value->{'absoluteAccumulated'}->{'expiryDate'}->{'volume'},
$value->{'absoluteAccumulated'}->{'previousExpiryDate'}->{'time'},
$value->{'absoluteAccumulated'}->{'previousExpiryDate'}->{'volume'}
) or die $DBI::errstr;
####
#!/usr/bin/perl
use Data::Dumper;
use DBI;
use File::Basename;
#use warnings;
@ARGV = qw[ NUL junk.dat CON CON ]; ## crude hack for local testing.
open( FH, "<", $ARGV[0] );
open( AH, "<", $ARGV[1] );
open( OUT, ">", $ARGV[2] );
open( LOG, ">", $ARGV[3] );
#Conneting to database
my $dbExt = "db";
my $driver = "SQLite";
#my $file = basename($ARGV[1]);
#my @fileName = split(/\./, $file);
#$file = $fileName[0] . ".$dbExt";
my $dbFileName = 'junk.db'; #dirname( $ARGV[1] ) ."/" . $file;
if(-e $dbFileName) {
unlink ($dbFileName);
}
my $database = "$dbFileName";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1, AutoCommit => 0 })
or die $DBI::errstr;
my $stmt = <do($stmt);
if($rv < 0){
unlink($dbFileName) if(-e $dbFileName);
$dbh->disconnect();
print LOG $DBI::errstr;
exit(1);
}
my $sql = $dbh->prepare( q[ INSERT INTO ACCU_USAGE VALUES( ?, ?, ?, ?, ?, ?, ?, ? ) ] )
or die $DBI::errstr;
my $SubsSize= -s $ARGV[0];
my $AccuSize= -s $ARGV[1];
my $SubsCount=0;
my $AccuCount=0;
my $finalCount=0;
my $rowCount = 0;
while( ) {
chomp;
my $line = $_;
$AccuCount++;
my $MobileNumber;
if( $line =~ /subscriberId:(\w+)\(\"(\d+)\"\)/ ) {
$MobileNumber = $2;
}
else {
$MobileNumber = "''";
}
my $plan = $line;
$plan =~ s/\\//g;
my @AccVolume;
if( $plan =~ /usageControlAccum:(\w+)\(\"(.*)\"\)/ ) {
my $p = $2;
$p =~ s/:\{/ => {/g;
$p =~ s/:\[/ => [/g;
$p =~s/\"/\'/g;
$p =~ s/\':/\'=>/g;
$p =~ s/\}n/\}/g;
# print $p,"\n";
my $e = eval( $p );
if ( @$ ) {
push (@AccVolume,"error");
} else {
#print Dumper($e);
foreach my $value ( @{$e->{'reportingGroups'}} ) {
if ( exists ( $value->{'absoluteAccumulated'}->{'counters'} ) ) {
$rv = $sql->execute(
$MobileNumber,
$value->{'subscriberGroupName'},
$value->{'absoluteAccumulated'}->{'counters'}->[0]->{'bidirVolume'},
$value->{'absoluteAccumulated'}->{'counters'}->[0]->{'name'},
$value->{'selected'},
$value->{'absoluteAccumulated'}->{'expiryDate'}->{'volume'},
$value->{'absoluteAccumulated'}->{'previousExpiryDate'}->{'time'},
$value->{'absoluteAccumulated'}->{'previousExpiryDate'}->{'volume'}
) or die $DBI::errstr;
}
elsif ( exists ( $value->{'absoluteAccumulated'}->{'bidirVolume'} ) ) {
$rv = $sql->execute(
$MobileNumber,
$value->{'subscriberGroupName'},
$value->{'absoluteAccumulated'}->{'bidirVolume'},
$value->{'absoluteAccumulated'}->{'name'},
$value->{'selected'},
$value->{'absoluteAccumulated'}->{'expiryDate'}->{'volume'},
$value->{'absoluteAccumulated'}->{'previousExpiryDate'}->{'time'},
$value->{'absoluteAccumulated'}->{'previousExpiryDate'}->{'volume'}
) or die $DBI::errstr;
}
if($rv < 0) {
print LOG "Failed to insert $stmt query. Exiting...\n";
unlink($dbFileName) if(-e $dbFileName);
print LOG $DBI::errstr;
$dbh->disconnect();
exit(1);
}
else {
$rowCount++;
if($rowCount == 5000) {
$dbh->commit();
$rowCount = 0;
}
}
}
}
}
}
close(AH);
$dbh->commit();