Main Koha release repository
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.5 KiB

# load records that already have biblionumber set into a koha system
# Written by TG on 10/04/2006
use strict;
#use warnings; FIXME - Bug 2505
# find Koha's Perl modules
# test carefully before changing this
use FindBin;
eval { require "$FindBin::Bin/" };
# Koha modules used
use Koha::Script;
use C4::Context;
use C4::Biblio;
use MARC::Record;
use MARC::File::USMARC;
use MARC::File::XML;
use MARC::Batch;
use Time::HiRes qw(gettimeofday);
use Getopt::Long;
use IO::File;
my $input_marc_file = '';
my ($version);
'file:s' => \$input_marc_file,
'h' => \$version,
if ($version || ($input_marc_file eq '')) {
print <<EOF
If your ISO2709 file already has biblionumbers, you can use this script
to import the MARC into your database.
parameters :
\th : this version/help screen
\tfile /path/to/file/to/dump : the file to dump
\t\$ export KOHA_CONF=/etc/koha.conf
\t\$ perl misc/ -file /home/jmf/koha.mrc
my $starttime = gettimeofday;
my $timeneeded;
my $dbh = C4::Context->dbh;
my $sth2=$dbh->prepare("update biblioitems set marc=? where biblionumber=?");
my $fh = IO::File->new($input_marc_file); # don't let MARC::Batch open the file, as it applies the ':utf8' IO layer
my $batch = MARC::Batch->new( 'USMARC', $fh );
my ($tagfield,$biblionumtagsubfield) = &GetMarcFromKohaField( "biblio.biblionumber" );
my $i=0;
while ( my $record = $batch->next() ) {
my $biblionumber = ($tagfield < 10) ? $record->field($tagfield)->data : $record->subfield($tagfield, $biblionumtagsubfield);
$sth2->execute($record->as_usmarc,$biblionumber) if $biblionumber;
print "$biblionumber \n";
$timeneeded = gettimeofday - $starttime ;
print "$i records in $timeneeded s\n" ;
# IS THIS SUPPOSED TO BE __END__ ?? If not, then what is it? --JBA
sub search {
my ($query)=@_;
my $nquery="\ \@attr 1=1007 ".$query;
my $oAuth=C4::Context->Zconn("biblioserver");
if ($oAuth eq "error"){
warn "Error/CONNECTING \n";
my $oAResult;
my $Anewq= ZOOM::Query::PQF->new($nquery);
eval {
$oAResult= $oAuth->search_pqf($nquery) ;
warn " /Cannot search:", $@->code()," /MSG:",$@->message(),"\n";
my $authrecord;
my $nbresults="0";
if ($nbresults eq "1" ){
my $rec=$oAResult->record(0);
my $marcdata=$rec->raw();
$authrecord = MARC::File::USMARC::decode($marcdata);
return ($authrecord,$nbresults);