[Koha-cvs] koha/export export.pl [rel_2_2]
Joshua Ferraro
jmf at kados.org
Fri May 26 06:17:29 CEST 2006
CVSROOT: /sources/koha
Module name: koha
Branch: rel_2_2
Changes by: Joshua Ferraro <kados at savannah.gnu.org> 06/05/26 04:17:29
Modified files:
export : export.pl
Log message:
Much better error handling, will now save broken records to a dump
file. Will also display warnings provided by the MARC::Record package
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/koha/export/export.pl.diff?only_with_tag=rel_2_2&tr1=1.1.2.4&tr2=1.1.2.5&r1=text&r2=text
Patches:
Index: koha/export/export.pl
diff -u koha/export/export.pl:1.1.2.4 koha/export/export.pl:1.1.2.5
--- koha/export/export.pl:1.1.2.4 Thu May 25 21:25:12 2006
+++ koha/export/export.pl Fri May 26 04:17:29 2006
@@ -59,22 +59,24 @@
my $VERSION = '.02';
# get the command-line options
-my ($format,$encoding,$ignoreerrors,$assumeunicode,$outfile,$help) = ('MARC','UTF-8','','','koha.mrc','');
+my ($format,$encoding,$ignoreerrors,$assumeunicode,$outfile,$dumpfile,$help) = ('MARC','UTF-8','','','koha.mrc','dump','');
GetOptions(
- 'format:s' => \$format,
+ 'format:s' => \$format,
'encoding:s' => \$encoding,
ignoreerrors => \$ignoreerrors,
assumeunicode => \$assumeunicode,
- 'file:s' => \$outfile,
+ 'file:s' => \$outfile,
+ 'dump:s' => \$dumpfile,
h => \$help,
);
if ($help) {die $USAGE};
-
# open our filehandle, if UTF-8, set the utf8 flag for Perl
if ((!$encoding) || (lc($encoding) =~ /^utf-?8$/o)) {
- open (OUT,">utf8",$outfile);
+ open (OUT,">utf8",$outfile) or die $!;
+ open (DUMP,">utf8",$dumpfile) or die $!;
} else {
open(OUT,">$outfile") or die $!;
+ open(DUMP,">$dumpfile") or die $!;
}
# set the MARC::Charset flags specified by user
@@ -87,21 +89,48 @@
# open a coneection to the db
my $dbh=C4::Context->dbh;
+my $count = 0;
+my $presth = $dbh->prepare("select count(*) from biblio");
+$presth->execute();
+my $total = $presth->fetchrow;
+print "$total records found\n";
+print "Exporting now\n";
my $sth=$dbh->prepare("select bibid from marc_biblio order by bibid");
$sth->execute();
while (my ($bibid) = $sth->fetchrow) {
+ $count++;
my $record = MARCgetbiblio($dbh,$bibid);
if ((!$format) || (lc($format) =~ /^marc$/o)) { # plain ole binary MARC
if (lc($encoding) =~ /^utf-?8$/o) {
- my $xml = $record->as_xml_record();
- my $newrecord = MARC::Record::new_from_xml($xml,$encoding);
- print OUT $newrecord->as_usmarc();
+ my $xml;
+ eval {
+ $xml = $record->as_xml_record();
+ };
+ if ($@) {
+ warn "problem in as_xml_record() for record #$count:".$@; print DUMP $record->as_usmarc();
+ }
+ my $newrecord;
+ eval {
+ $newrecord = MARC::Record::new_from_xml($xml,$encoding);
+ };
+ if ($@) {
+ warn "problem in new_from_xml for record #$count:".$@;
+ print DUMP $xml;
+ } else {
+ print OUT $newrecord->as_usmarc();
+ }
} else {
- print OUT $record->as_usmarc();
+ print OUT $record->as_usmarc();
+ }
+ if ( $record->warnings() ) {
+ print join( "\n", $record->warnings(), "" );
}
} elsif (lc($format) =~ /^marc-?xml$/o) { # MARCXML format
- my $xml = $record->as_xml_record($encoding);
- print OUT $xml;
+ my $xml = $record->as_xml_record($encoding);
+ print OUT $xml;
+ }
+ if (($count % 100) <1) {
+ print "$count out of $total finished\n"
}
}
close(OUT);
More information about the Koha-cvs
mailing list