batchRebuildBiblioTables.pl doesn't crash anymore when GetMarcBiblio fails.
authorMatthias Meusburger <matthias.meusburger@biblibre.com>
Thu, 1 Apr 2010 14:07:25 +0000 (16:07 +0200)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Fri, 14 May 2010 07:27:45 +0000 (09:27 +0200)
Unprocessed biblionumbers are displayed at the end of the execution instead.

misc/batchRebuildBiblioTables.pl

index 15873e2..88ecb65 100755 (executable)
@@ -53,9 +53,14 @@ my $sth = $dbh->prepare("SELECT biblionumber FROM biblio");
 $sth->execute;
 # my ($biblionumbermax) =  $sth->fetchrow;
 # warn "$biblionumbermax <<==";
+my @errors;
 while (my ($biblionumber)= $sth->fetchrow) {
     #now, parse the record, extract the item fields, and store them in somewhere else.
     my $record = GetMarcBiblio($biblionumber);
+    if (not defined $record) {
+       push @errors, $biblionumber;
+       next;
+    }
     my @fields = $record->field($tagfield);
     my @items;
     my $nbitems=0;
@@ -77,6 +82,9 @@ while (my ($biblionumber)= $sth->fetchrow) {
 # $dbh->do("unlock tables");
 my $timeneeded = time() - $starttime;
 print "$i MARC record done in $timeneeded seconds\n";
+if (scalar(@errors) > 0) {
+    print "Some biblionumber could not be processed though: ", join(" ", @errors);
+}
 
 # modified NEWmodbiblio to jump the MARC part of the biblio modif
 # highly faster