revert the too-much-change
[Evergreen.git] / Open-ILS / src / extras / import / pg_loader.pl
index afc1273..679f44e 100755 (executable)
@@ -14,7 +14,7 @@ use Time::HiRes qw/time/;
 use Getopt::Long;
 
 my @files;
-my ($config, $output, @auto, @order, @wipe) =
+my ($config, $output, @auto, @order, @wipe, $quiet) =
        ('/openils/conf/opensrf_core.xml');
 
 GetOptions(
@@ -23,6 +23,7 @@ GetOptions(
        'wipe=s'        => \@wipe,
        'autoprimary=s' => \@auto,
        'order=s'       => \@order,
+       'quiet'         => \$quiet,
 );
 
 my %lineset;
@@ -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;