633 |
|
|
634 |
foreach my $database ($cfg->Sections) { |
foreach my $database ($cfg->Sections) { |
635 |
|
|
636 |
|
# save database name in global variable path for later |
637 |
|
# (need for index filter creation) |
638 |
|
$path = $database; |
639 |
|
|
640 |
my $type = lc($cfg -> val($database, 'type')) || die "$database doesn't have 'type' defined"; |
my $type = lc($cfg -> val($database, 'type')) || die "$database doesn't have 'type' defined"; |
641 |
my $add_xml = $cfg -> val($database, 'xml'); # optional |
my $add_xml = $cfg -> val($database, 'xml'); # optional |
642 |
|
|
742 |
$import2cp = Text::Iconv->new($config->{isis_codepage},$codepage); |
$import2cp = Text::Iconv->new($config->{isis_codepage},$codepage); |
743 |
my $db = new Biblio::Isis( isisdb => $isis_db ); |
my $db = new Biblio::Isis( isisdb => $isis_db ); |
744 |
|
|
745 |
my $max_rowid = $db->count || die "can't find maxmfn"; |
my $max_rowid = $db->count if ($db); |
|
$max_rowid = 200; # XXX |
|
746 |
|
|
747 |
print STDERR "Reading database: $isis_db [$max_rowid rows]\n"; |
if (! $max_rowid) { |
748 |
|
print STDERR "FATAL: can't read ISIS database: $isis_db, skipping...\n"; |
749 |
|
next; |
750 |
|
} |
751 |
|
|
752 |
$path = $database; |
print STDERR "Reading database: $isis_db [$max_rowid rows]\n"; |
753 |
|
|
754 |
for (my $row_id = 1; $row_id <= $max_rowid; $row_id++ ) { |
for (my $row_id = 1; $row_id <= $max_rowid; $row_id++ ) { |
755 |
my $row = $db->to_hash( $row_id ); |
my $row = $db->to_hash( $row_id ); |
832 |
print "Document-Type: XML\n\n$xml\n"; |
print "Document-Type: XML\n\n$xml\n"; |
833 |
} |
} |
834 |
} |
} |
835 |
|
|
836 |
|
print STDERR "\n"; |
837 |
|
|
838 |
} elsif ($type_base eq "marc") { |
} elsif ($type_base eq "marc") { |
839 |
|
|
840 |
require MARC::File::USMARC; |
require MARC::File::USMARC; |
846 |
warn "marc_format is no longer used!" if ($config->{marc_format}); |
warn "marc_format is no longer used!" if ($config->{marc_format}); |
847 |
print STDERR "Reading MARC file '$marc_file'\n"; |
print STDERR "Reading MARC file '$marc_file'\n"; |
848 |
|
|
849 |
my $marc = MARC::File::USMARC->in( $marc_file ) |
my $marc = MARC::File::USMARC->in( $marc_file ); |
850 |
|| die "Can't open MARC file '$marc_file': ".$MARC::File::ERROR; |
|
851 |
|
if (! $marc) { |
852 |
|
print STDERR "FATAL: can't read MARC file: $marc_file, skipping...\n"; |
853 |
|
next; |
854 |
|
} |
855 |
|
|
856 |
# count records in MARC file |
# count records in MARC file |
857 |
sub marc_count { |
sub marc_count { |
858 |
my $filename = shift || die; |
my $filename = shift || die; |
859 |
my $file = MARC::File::USMARC->in($filename) || die $MARC::File::ERROR; |
my $file = MARC::File::USMARC->in($filename) || return; |
860 |
my $count = 0; |
my $count = 0; |
861 |
while ($file->skip()) { |
while ($file->skip()) { |
862 |
$count++; |
$count++; |
866 |
|
|
867 |
my $count = marc_count($marc_file) || warn "no records in '$marc_file'?"; |
my $count = marc_count($marc_file) || warn "no records in '$marc_file'?"; |
868 |
|
|
869 |
my $i = 0; |
my $i = 1; |
870 |
|
|
871 |
while( my $rec = $marc->next() ) { |
while( my $rec = $marc->next() ) { |
872 |
|
|
873 |
progress($i++,$count); |
progress($i,$count); |
874 |
|
|
875 |
my $swishpath = $database."#".$i; |
my $swishpath = $database."#".$i; |
876 |
|
|
881 |
print "Content-Length: ".(length($xml)+1)."\n"; |
print "Content-Length: ".(length($xml)+1)."\n"; |
882 |
print "Document-Type: XML\n\n$xml\n"; |
print "Document-Type: XML\n\n$xml\n"; |
883 |
} |
} |
884 |
|
|
885 |
|
$i++; |
886 |
} |
} |
887 |
|
|
888 |
print STDERR "\n"; |
print STDERR "\n"; |
947 |
|
|
948 |
=head1 DESCRIPTION |
=head1 DESCRIPTION |
949 |
|
|
950 |
This command will read ISIS data file using IsisDB perl module, MARC |
This command will read ISIS data file using Biblio::Isis perl module, MARC |
951 |
records using MARC module and optionally Micro$oft Excel files to |
records using MARC::File module and optionally Micro$oft Excel files to |
952 |
create one XML file for usage with I<SWISH-E> indexer. Dispite it's name, |
create one XML file for usage with I<SWISH-E> indexer. Dispite it's name, |
953 |
this script B<isn't general xml generator> from isis files (isis allready |
this script B<isn't general xml generator> from isis files (isis allready |
954 |
has something like that). Output of this script is tailor-made for SWISH-E. |
has something like that). Output of this script is tailor-made for SWISH-E. |