From c9d082bcdc353d5f49703cd598d5f3cc1f0f55da Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20Demians?= Date: Tue, 12 Apr 2011 16:41:38 +0100 Subject: [PATCH] Bug 5067 Add a cleanisbn param to bulkmarcimport.pl Import script shouldn't remove an information present in entering biblio records. With this patch, by default, ISBN are not cleared anymore. [2011.04.12] Rebased on HEAD DOCUMENTATION: There is a new paramater --isbn|--noisbn Signed-off-by: Colin Campbell Signed-off-by: Chris Cormack --- misc/migration_tools/bulkmarcimport.pl | 29 +++++++++++++------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/misc/migration_tools/bulkmarcimport.pl b/misc/migration_tools/bulkmarcimport.pl index 1d31382f53..ddfa5e0a96 100755 --- a/misc/migration_tools/bulkmarcimport.pl +++ b/misc/migration_tools/bulkmarcimport.pl @@ -34,6 +34,7 @@ binmode(STDOUT, ":utf8"); my ( $input_marc_file, $number, $offset) = ('',0,0); my ($version, $delete, $test_parameter, $skip_marc8_conversion, $char_encoding, $verbose, $commit, $fk_off,$format,$biblios,$authorities,$keepids,$match, $isbn_check, $logfile); my ($sourcetag,$sourcesubfield,$idmapfl); +my $cleanisbn = 1; $|=1; @@ -59,6 +60,7 @@ GetOptions( 'x:s' => \$sourcetag, 'y:s' => \$sourcesubfield, 'idmap:s' => \$idmapfl, + 'cleanisbn!' => \$cleanisbn, ); $biblios=!$authorities||$biblios; @@ -176,7 +178,6 @@ RECORD: while ( ) { # from because we don't have access to the original blob. Note # that the staging import can deal with this condition (via # C4::Charset::MarcToUTF8Record) because it doesn't use MARC::Batch. - $i++; next; } # skip if we get an empty record (that is MARC valid, but will result in AddBiblio failure @@ -197,20 +198,13 @@ RECORD: while ( ) { } my $isbn; # remove trailing - in isbn (only for biblios, of course) - if ($biblios) { - if ($marcFlavour eq 'UNIMARC') { - if (my $f010 = $record->field('010')) { - $isbn = $f010->subfield('a'); - $isbn =~ s/-//g; - $f010->update('a' => $isbn); - } - } else { - if (my $f020 = $record->field('020')) { - if ($isbn = $f020->subfield('a')) { - $isbn =~ s/-//g; - $f020->update('a' => $isbn); - } - } + if ($biblios && $cleanisbn) { + my $tag = $marcFlavour eq 'UNIMARC' ? '010' : '020'; + my $field = $record->field($tag); + my $isbn = $field && $field->subfield('a'); + if ( $isbn ) { + $isbn =~ s/-//g; + $field->update('a' => $isbn); } } my $id; @@ -519,6 +513,11 @@ If set, a search will be done on isbn, and, if the same isbn is found, the biblio is not added. It's another method to deduplicate. B<-match> & B<-isbn> can be both set. +=item B<-cleanisbn> + +Clean ISBN fields from entering biblio records, ie removes hyphens. By default, +ISBN are cleaned. --nocleanisbn will keep ISBN unchanged. + =item B<-x>=I Source bib I for reporting the source bib number -- 2.39.5