X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=eg_staged_bib_overlay;h=836795b74fd9a8912fc4626108d5514eb0f2a7a6;hp=1755adaa2f1c222e345b34da9cde630470eae829;hb=e646ed5624e97e917dff2b8fc11a3bfbaf3175e3;hpb=6ae9d837455c8ff1557a65bef92bdf4d6c653b17 diff --git a/eg_staged_bib_overlay b/eg_staged_bib_overlay index 1755ada..836795b 100755 --- a/eg_staged_bib_overlay +++ b/eg_staged_bib_overlay @@ -281,14 +281,19 @@ sub handle_stage_bibs { $dbh->commit; $dbh->begin_work; } - my $marc = MARC::Record->new_from_usmarc($_); - my $bibid = $marc->subfield('901', 'c'); - if ($bibid !~ /^\d+$/) { - print STDERR "Record $i is suspect; skipping\n"; + eval { + my $marc = MARC::Record->new_from_usmarc($_); + my $bibid = $marc->subfield('901', 'c'); + if ($bibid !~ /^\d+$/) { + die('Subfield 901$c is not numeric or missing.'); + } + my $xml = OpenILS::Application::AppUtils->entityize($marc->as_xml_record()); + $ins->execute($xml, $bibid); + }; + if ($@) { + warn("Record $i is bad: $@; skipping."); next; } - my $xml = OpenILS::Application::AppUtils->entityize($marc->as_xml_record()); - $ins->execute($xml, $bibid); } $dbh->commit; report_progress("Records staged", $i) if 0 != $i % 100; @@ -445,25 +450,31 @@ sub handle_stage_auths { $dbh->commit; $dbh->begin_work; } - my $marc = MARC::Record->new_from_usmarc($_); - my $authid = $marc->subfield('901', 'c'); - if (defined($authid) && $authid !~ /^\d+$/) { - undef $authid; - } - my $lccn = $marc->subfield('010', 'a'); - if (defined $lccn) { - $lccn =~ s/^\s+//; - $lccn =~ s/\s+$//; - $lccn =~ s/\s+/ /g; - } - my $cancelled_lccn = $marc->subfield('010', 'z'); - if (defined $cancelled_lccn) { - $cancelled_lccn =~ s/^\s+//; - $cancelled_lccn =~ s/\s+$//; - $cancelled_lccn =~ s/\s+/ /g; + eval { + my $marc = MARC::Record->new_from_usmarc($_); + my $authid = $marc->subfield('901', 'c'); + if (defined($authid) && $authid !~ /^\d+$/) { + undef $authid; + } + my $lccn = $marc->subfield('010', 'a'); + if (defined $lccn) { + $lccn =~ s/^\s+//; + $lccn =~ s/\s+$//; + $lccn =~ s/\s+/ /g; + } + my $cancelled_lccn = $marc->subfield('010', 'z'); + if (defined $cancelled_lccn) { + $cancelled_lccn =~ s/^\s+//; + $cancelled_lccn =~ s/\s+$//; + $cancelled_lccn =~ s/\s+/ /g; + } + my $xml = OpenILS::Application::AppUtils->entityize($marc->as_xml_record()); + $ins->execute($xml, $authid, $lccn, $cancelled_lccn, $xml); + }; + if ($@) { + warn("Record $i is bad: $@; skipping."); + next; } - my $xml = OpenILS::Application::AppUtils->entityize($marc->as_xml_record()); - $ins->execute($xml, $authid, $lccn, $cancelled_lccn, $xml); } $dbh->commit; report_progress("Records staged", $i) if 0 != $i % 100;