X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2Fbin%2Ffreeside-cdr-asterisk_sql;h=4b5bcc86b7ad9a5d8fdba08bb3cc7fd8d361e2e3;hp=160780bde990c62b8d8d8d7a96bd8c110f3d9750;hb=a36e0f8a0f69349dafaa16d1d2d57dfb6e5dbc85;hpb=f263d9c5f3fa07442faadd9000aaad7275892f8e diff --git a/FS/bin/freeside-cdr-asterisk_sql b/FS/bin/freeside-cdr-asterisk_sql index 160780bde..4b5bcc86b 100755 --- a/FS/bin/freeside-cdr-asterisk_sql +++ b/FS/bin/freeside-cdr-asterisk_sql @@ -9,6 +9,8 @@ use FS::cdr; use DBI; use Getopt::Std; +$DEBUG = 0; + my %opt; getopts('e:H:U:P:D:T:', \%opt); my $user = shift or die &usage; @@ -26,25 +28,41 @@ adminsuidsetup $user; my $fsdbh = FS::UID::dbh; -# check for existence of freesidestatus my $table = $opt{T} || 'cdr'; -my $status = $dbi->selectall_arrayref("SHOW COLUMNS FROM $table WHERE Field = 'freesidestatus'"); -if( ! @$status ) { - print "Adding freesidestatus column...\n"; - $dbi->do("ALTER TABLE $table ADD COLUMN freesidestatus varchar(32)") - or die $dbi->errstr; + +# check for existence of freesidestatus +if ( $engine =~ /^mysql/ ) { + my $status = $dbi->selectall_arrayref("SHOW COLUMNS FROM $table WHERE Field = 'freesidestatus'"); + if( ! @$status ) { + warn "Adding freesidestatus column...\n" if $DEBUG; + $dbi->do("ALTER TABLE $table ADD COLUMN freesidestatus varchar(32)") + or die $dbi->errstr; + } else { + warn "freesidestatus column present\n" if $DEBUG; + } } -else { - print "freesidestatus column present\n"; + +my @cols = (qw( + calldate clid src dst dcontext channel lastapp lastdata duration + billsec disposition amaflags accountcode userfield +)); + +# check for existence of uniqueid +if ( $engine =~ /^mysql/ ) { + my $status = $dbi->selectall_arrayref("SHOW COLUMNS FROM $table WHERE Field = 'uniqueid'"); + if( @$status ) { + push @cols, 'uniqueid'; + } +} else { + #assume there's a uniqueid + push @cols, 'uniqueid'; } -my @cols = ( qw( -calldate clid src dst dcontext channel lastapp lastdata duration - billsec disposition amaflags accountcode uniqueid userfield) ); -my $sql = 'SELECT '.join(',', @cols). " FROM $table WHERE freesidestatus IS NULL"; -my $sth = $sql->prepare($sql); +my $sql = + 'SELECT '.join(',', @cols). " FROM $table WHERE freesidestatus IS NULL"; +my $sth = $dbi->prepare($sql); $sth->execute; -print "Importing ".$sth->rows." records...\n"; +warn "Importing ".$sth->rows." records...\n" if $DEBUG; my $cdr_batch = new FS::cdr_batch({ 'cdrbatch' => 'sql-import-'. time2str('%Y/%m/%d-%T',time), @@ -61,8 +79,8 @@ while ( $row = $sth->fetchrow_hashref ) { $cdr->startdate(str2time($cdr->calldate)); $cdr->cdrbatchnum($cdrbatchnum); my $error = $cdr->insert; - if($error) { - print "failed import: $error\n"; + if ($error) { + warn "failed import: $error\n"; } else { $imports++; @@ -75,13 +93,13 @@ while ( $row = $sth->fetchrow_hashref ) { ) ) { $updates++; - } - else { - print "failed to set status: ".$dbi->errstr."\n"; + } else { + warn "failed to set status: ".$dbi->errstr."\n"; } } } -print "Done.\nImported $imports CDRs, marked $updates CDRs as done.\n"; + +warn "Done.\nImported $imports CDRs, marked $updates CDRs as done.\n"; $dbi->disconnect; sub usage { @@ -94,12 +112,24 @@ freeside-cdr-asterisk_sql - Import CDRs from an Asterisk SQL database =head1 SYNOPSIS - freeside-cdr-asterisk_sql -e mysql|Pg|... [ -H host ] -D database -U user -P password freesideuser + freeside-cdr-asterisk_sql -e mysql|Pg|... [ -H host ] -D database [ -T table ] -U user -P password [ -s ] freesideuser =head1 DESCRIPTION Imports CDR records from an Asterisk SQL database. +-H: hostname + +-e: Database engine (default mysql) + +-D: database name + +-T: table name (default cdr) + +-U: username + +-P: password + =cut 1;