X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=emig.d%2Fbin%2Fmig-prepbibs;fp=emig.d%2Fbin%2Fmig-prepbibs;h=93d1c66e899f81ad60742f415b1b41a5231140fe;hp=69c26740a2fb09e8b16989f9233ca04541c53f5a;hb=c16c4d4c903563ce83f4c6df5d6c51a4c6742b2c;hpb=a53a6766a943d6a1816ad2991140d9e592d552d6 diff --git a/emig.d/bin/mig-prepbibs b/emig.d/bin/mig-prepbibs index 69c2674..93d1c66 100755 --- a/emig.d/bin/mig-prepbibs +++ b/emig.d/bin/mig-prepbibs @@ -45,19 +45,31 @@ 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() ) { +my $record; +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('852'); foreach my $n (@nnn) { $n->set_tag('851'); @@ -68,7 +80,7 @@ while ( my $record = $batch->next() ) { close ($infile); close ($outfile); - +close ($errorfile); ########### functions