X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=kmig.d%2Fbin%2Fmig-prepbibs;fp=kmig.d%2Fbin%2Fmig-prepbibs;h=7c86c38b0fee777017220e86efdd8f03a46421f9;hp=b3a89f1a80ba814ac3cab8c818eec12fe900b6ce;hb=c16c4d4c903563ce83f4c6df5d6c51a4c6742b2c;hpb=a53a6766a943d6a1816ad2991140d9e592d552d6 diff --git a/kmig.d/bin/mig-prepbibs b/kmig.d/bin/mig-prepbibs index b3a89f1..7c86c38 100755 --- a/kmig.d/bin/mig-prepbibs +++ b/kmig.d/bin/mig-prepbibs @@ -45,19 +45,30 @@ pod2usage(-verbose => 2) if defined $ARGV[0] && $ARGV[0] eq '--help'; pod2usage(-verbose => 1) if ! $ARGV[1]; my $infile; +my $i = 0; my $ret = GetOptions( 'file:s' => \$infile ); my $outfile = $infile . '.prepped_xml'; +my $errorfile = $infile . '.errors_xml'; open my $outfh, '>:utf8', $outfile or die "Can't open output file $!\n"; - -my $batch = MARC::Batch->new( 'USMARC', $infile ); +open my $errorfh, '>:utf8', $errorfile or die "Can't open error file $!\n"; + +my $filetype = `file $infile`; +my $batch; +if ($filetype =~ m/MARC21/) { + $batch = MARC::Batch->new( 'USMARC', $infile ); +} else { + $batch = MARC::Batch->new( 'XML', $infile ); +} $batch->strict_off(); -while ( my $record = $batch->next() ) { +while ( eval {$record = $batch->next()} or do { if ($@) { print $errorfh $record->as_xml(); next; } } ) { + $i++; + print "Processed: $i\n" if ($i % 100) == 0; my @nnn = $record->field('999'); foreach my $n (@nnn) { $n->set_tag('998'); @@ -68,7 +79,7 @@ while ( my $record = $batch->next() ) { close ($infile); close ($outfile); - +close ($errorfile); ########### functions