revert the too-much-change
[Evergreen.git] / Open-ILS / src / extras / import / pg_loader.pl
index ad5ee88..679f44e 100755 (executable)
@@ -7,15 +7,15 @@ use OpenSRF::System;
 use OpenSRF::EX qw/:try/;
 use OpenSRF::Utils::SettingsClient;
 use OpenILS::Utils::Fieldmapper;
-use JSON;
+use OpenSRF::Utils::JSON;
 use FileHandle;
 
 use Time::HiRes qw/time/;
 use Getopt::Long;
 
 my @files;
-my ($config, $output, @auto, @order, @wipe) =
-       ('/openils/conf/bootstrap.conf');
+my ($config, $output, @auto, @order, @wipe, $quiet) =
+       ('/openils/conf/opensrf_core.xml');
 
 GetOptions(
        'config=s'      => \$config,
@@ -23,6 +23,7 @@ GetOptions(
        'wipe=s'        => \@wipe,
        'autoprimary=s' => \@auto,
        'order=s'       => \@order,
+       'quiet'         => \$quiet,
 );
 
 my %lineset;
@@ -38,7 +39,7 @@ while ( my $rec = <> ) {
 
        my $row;
        try {
-               $row = JSON->JSON2perl($rec);
+               $row = OpenSRF::Utils::JSON->JSON2perl($rec);
        } catch Error with {
                my $e = shift;
                warn "\n\n !!! Error : $e \n\n at or around line $count\n";
@@ -65,14 +66,14 @@ while ( my $rec = <> ) {
 
        push @{ $lineset{$hint} }, [map { $row->$_ } @{ $fieldcache{$hint}{fields} }];
 
-       if (!($count % 500)) {
+       if (!$quiet && !($count % 500)) {
                print STDERR "\r$count\t". $count / (time - $starttime);
        }
 
        $count++;
 }
 
-print STDERR "\nWriting file ...\n";
+print STDERR "\nWriting file ...\n" if (!$quiet);
 
 $output = '&STDOUT' unless ($output);
 $output = FileHandle->new(">$output") if ($output);
@@ -80,8 +81,12 @@ $output = FileHandle->new(">$output") if ($output);
 binmode($output,'utf8');
 
 $output->print("SET CLIENT_ENCODING TO 'UNICODE';\n\n");
+$output->print("BEGIN;\n\n");
 
 for my $h (@order) {
+       # continue if there was no data for this table
+       next unless ($fieldcache{$h});
+
        my $fields = join(',', @{ $fieldcache{$h}{fields} });
        $output->print( "DELETE FROM $fieldcache{$h}{table};\n" ) if (grep {$_ eq $h } @wipe);
        $output->print( "COPY $fieldcache{$h}{table} ($fields) FROM STDIN;\n" );
@@ -113,3 +118,6 @@ for my $h (@order) {
        $output->print("SELECT setval('$fieldcache{$h}{sequence}'::TEXT, (SELECT MAX($fieldcache{$h}{pkey}) FROM $fieldcache{$h}{table}), TRUE);\n\n")
                if (!grep { $_ eq $h} @auto);
 }
+
+$output->print("COMMIT;\n\n");
+$output->close;