use strict;
use Getopt::Std;
+use Date::Parse;
use Date::Format;
use Text::CSV_XS;
use DBI qw( :sql_types );
###
use vars qw( $opt_m $opt_a $opt_b $opt_r $opt_d $opt_v $opt_P );
-getopts('m:abr:dP:v:');
+getopts('m:abr:d:P:v:');
my %options = ();
foreach my $filename ( @$ls ) {
+ next if $opt_d && $filename eq $opt_d;
+
warn "Downloading $filename\n" if $opt_v;
#get the file
my @keys = keys %dbhash;
+ #skip blank records
+ next unless grep defined($_), values %dbhash;
+
+ my $date = time2str( '%Y-%m-%d %X', str2time( $hash{'Date'} ) );
+
$hash{'Status-Type'} = $status_type{ $hash{'Status-Type'} }
if exists $status_type{ $hash{'Status-Type'} };
my @extra_values = ();
if ( $hash{'Status-Type'} eq 'Start' ) {
- $dbhash{'AcctStartTime'} = $hash{'Date'};
+ push @keys, 'AcctStartTime';
+ $dbhash{'AcctStartTime'} = $date;
- $sql = 'INSERT INTO radacct ( ', join(',', @keys).
- ' ) VALUES ( '. map( ' ? ', @keys ). ' )';
+ $sql = 'INSERT INTO radacct ( '. join(',', @keys).
+ ' ) VALUES ( '. join(',', map ' ? ', @keys ). ' )';
} elsif ( $hash{'Status-Type'} eq 'Stop' ) {
my $AcctSessionId = delete($dbhash{AcctSessionId});
- $dbhash{'AcctStopTime'} = $hash{'Date'};
+
+ push @keys, 'AcctStopTime';
+ $dbhash{'AcctStopTime'} = $date;
push @extra_values, $AcctSessionId;
foreach my $value ( map $dbhash{$_}, @keys ) {
my $key = shift @keys;
my $type = exists($bind_type{$key}) ? $bind_type{$key} : SQL_VARCHAR;
+ $value ||= 0 if $type == SQL_INTEGER;
$sth->bind_param($p_num++, $value, $type);
}
foreach my $value ( @extra_values ) {