5 # find Koha's Perl modules
6 # test carefully before changing this
8 eval { require "$FindBin::Bin/kohalib.pl" };
18 # command-line parameters
22 my $batch_comment = "";
25 my $result = GetOptions(
26 'file:s' => \$input_file,
27 'match-bibs:s' => \$match_bibs,
28 'add-items' => \$add_items,
29 'comment:s' => \$batch_comment,
30 'h|help' => \$want_help
33 if (not $result or $input_file eq "" or $want_help) {
38 unless (-r $input_file) {
39 die "$0: cannot open input file $input_file: $!\n";
42 my $dbh = C4::Context->dbh;
43 $dbh->{AutoCommit} = 0;
44 process_batch($input_file, $match_bibs, $add_items, $batch_comment);
50 my ($input_file, $match_bibs, $add_items, $batch_comment) = @_;
52 open IN, "<$input_file" or die "$0: cannot open input file $input_file: $!\n";
53 my $marc_records = "";
55 my $num_input_records = 0;
57 $marc_records .= $_; # FIXME - this sort of string concatenation
58 # is probably rather inefficient
63 my $marc_flavor = C4::Context->preference('marcflavour');
65 print "... staging MARC records -- please wait\n";
66 my ($batch_id, $num_valid, $num_items, @import_errors) =
67 BatchStageMarcRecords($marc_flavor, $marc_records, $input_file, $batch_comment, '', $add_items, 0,
68 100, \&print_progress_and_commit);
69 print "... finished staging MARC records\n";
71 my $num_with_matches = 0;
73 my $matcher = C4::Matcher->fetch($match_bibs) ;
74 if( ! defined $matcher) {
75 $matcher = C4::Matcher->new('biblio');
76 $matcher->add_simple_matchpoint('isbn', 1000, '020', 'a', -1, 0, '');
77 $matcher->add_simple_required_check('245', 'a', -1, 0, '',
78 '245', 'a', -1, 0, '');
80 SetImportBatchMatcher($batch_id, $match_bibs);
82 print "... looking for matches with records already in database\n";
83 $num_with_matches = BatchFindBibDuplicates($batch_id, $matcher, 10, 100, \&print_progress_and_commit);
84 print "... finished looking for matches\n";
87 my $num_invalid_bibs = scalar(@import_errors);
90 MARC record staging report
91 ------------------------------------
92 Input file: $input_file
93 Number of input bibs: $num_input_records
94 Number of valid bibs: $num_valid
95 Number of invalid bibs: $num_invalid_bibs
98 print "Number of bibs matched: $num_with_matches\n";
100 print "Incoming bibs not matched against existing bibs (--match-bibs option not supplied)\n";
103 print "Number of items parsed: $num_items\n";
105 print "No items parsed (--add-items option not supplied)\n";
109 print "Batch number assigned: $batch_id\n";
113 sub print_progress_and_commit {
116 print "... processed $recs records\n";
121 $0: stage MARC bib file into reservoir.
123 Use this batch job to load a file of MARC bibliographic records
124 (with optional item information) into the Koha reservoir.
126 After running this program to stage your file, you can use
127 either the batch job commit_biblios_file.pl or the Koha
128 Tools option "Manage Staged MARC Records" to load the
129 records into the main Koha database.
132 --file <file_name> name of input MARC bib file
133 --match-bibs <match_id> use this option to match bibs
134 in the file with bibs already in
135 the database for future overlay.
136 If <match_id> isn't defined, a default
137 MARC21 ISBN & title match rule will be applied.
138 --add-items use this option to specify that
139 item data is embedded in the MARC
140 bibs and should be parsed.
141 --comment <comment> optional comment to describe
142 the record batch; if the comment
143 has spaces in it, surround the
144 comment with quotation marks.
145 --help or -h show this message.