4 #use warnings; FIXME - Bug 2505
6 # find Koha's Perl modules
7 # test carefully before changing this
9 eval { require "$FindBin::Bin/kohalib.pl" };
19 # command-line parameters
23 my $batch_comment = "";
27 my $result = GetOptions
(
28 'file:s' => \
$input_file,
29 'match-bibs:s' => \
$match_bibs,
30 'add-items' => \
$add_items,
31 'no-replace' => \
$no_replace,
32 'comment:s' => \
$batch_comment,
33 'h|help' => \
$want_help
36 if (not $result or $input_file eq "" or $want_help) {
41 unless (-r
$input_file) {
42 die "$0: cannot open input file $input_file: $!\n";
45 my $dbh = C4
::Context
->dbh;
46 $dbh->{AutoCommit
} = 0;
47 process_batch
($input_file, $match_bibs, $add_items, $batch_comment);
53 my ($input_file, $match_bibs, $add_items, $batch_comment) = @_;
55 open IN
, "<$input_file" or die "$0: cannot open input file $input_file: $!\n";
56 my $marc_records = "";
58 my $num_input_records = 0;
62 next unless $_; # skip if record has only whitespace, as might occur
63 # if file includes newlines between each MARC record
64 $marc_records .= $_; # FIXME - this sort of string concatenation
65 # is probably rather inefficient
70 my $marc_flavor = C4
::Context
->preference('marcflavour');
72 print "... staging MARC records -- please wait\n";
73 my ($batch_id, $num_valid, $num_items, @import_errors) =
74 BatchStageMarcRecords
($marc_flavor, $marc_records, $input_file, $batch_comment, '', $add_items, 0,
75 100, \
&print_progress_and_commit
);
76 print "... finished staging MARC records\n";
78 my $num_with_matches = 0;
80 my $matcher = C4
::Matcher
->fetch($match_bibs) ;
81 if (! defined $matcher) {
82 $matcher = C4
::Matcher
->new('biblio');
83 $matcher->add_simple_matchpoint('isbn', 1000, '020', 'a', -1, 0, '');
84 $matcher->add_simple_required_check('245', 'a', -1, 0, '',
85 '245', 'a', -1, 0, '');
87 SetImportBatchMatcher
($batch_id, $match_bibs);
89 # set default record overlay behavior
90 SetImportBatchOverlayAction
($batch_id, ($no_replace) ?
'ignore' : 'replace');
91 SetImportBatchNoMatchAction
($batch_id, 'create_new');
92 SetImportBatchItemAction
($batch_id, 'always_add');
93 print "... looking for matches with records already in database\n";
94 $num_with_matches = BatchFindBibDuplicates
($batch_id, $matcher, 10, 100, \
&print_progress_and_commit
);
95 print "... finished looking for matches\n";
98 my $num_invalid_bibs = scalar(@import_errors);
101 MARC record staging report
102 ------------------------------------
103 Input file
: $input_file
104 Number of input bibs
: $num_input_records
105 Number of valid bibs
: $num_valid
106 Number of invalid bibs
: $num_invalid_bibs
109 print "Number of bibs matched: $num_with_matches\n";
111 print "Incoming bibs not matched against existing bibs (--match-bibs option not supplied)\n";
114 print "Number of items parsed: $num_items\n";
116 print "No items parsed (--add-items option not supplied)\n";
120 print "Batch number assigned: $batch_id\n";
124 sub print_progress_and_commit
{
127 print "... processed $recs records\n";
132 $0: stage MARC bib file into reservoir
.
134 Use this batch job to load a file of MARC bibliographic records
135 (with optional item information
) into the Koha reservoir
.
137 After running this program to stage your file
, you can
use
138 either the batch job commit_biblios_file
.pl
or the Koha
139 Tools option
"Manage Staged MARC Records" to load the
140 records into the main Koha database
.
143 --file
<file_name
> name of input MARC bib file
144 --match
-bibs
<match_id
> use this option to match bibs
145 in the file with bibs already
in
146 the database
for future overlay
.
147 If
<match_id
> isn
't defined, a default
148 MARC21 ISBN & title match rule will be applied.
149 --add-items use this option to specify that
150 item data is embedded in the MARC
151 bibs and should be parsed.
152 --no-replace overlay action for bib record: default is to
153 replace extant bib with the imported record.
154 --comment <comment> optional comment to describe
155 the record batch; if the comment
156 has spaces in it, surround the
157 comment with quotation marks.
158 --help or -h show this message.