$arg->{dsn} ||= 'dbi:mysql:database=koha';
$arg->{user} ||= $ENV{KOHA_USER};
$arg->{passwd} ||= $ENV{KOHA_PASSWD},
- $arg->{sql} ||= 'select biblionumber as mfn, marc from biblioitems';
+ $arg->{sql} ||= 'select biblionumber, marc from biblioitems order by biblionumber asc';
$arg->{sql} .= ' limit ' . $arg->{limit} if $arg->{limit};
$arg->{sql} .= ' offset ' . $arg->{offset} if $arg->{offset};
$log->info("opening Koha database '$arg->{dsn}'");
- $self->{_dbh} = DBI->connect( $arg->{dsn}, $arg->{user}, $arg->{passwd}, { RaiseError => 1 } );
+ $self->{_dbh} = DBI->connect( $arg->{dsn}, $arg->{user}, $arg->{passwd}, {
+ RaiseError => 1,
+ #mysql_enable_utf8 => 1, # not really needed
+ } );
$self->{_sth} = $self->{_dbh}->prepare( $arg->{sql} );
$self->{_sth}->execute;
$self->{_koha_size} = $self->{_sth}->rows;
my $row = $self->{_sth}->fetchrow_hashref;
+ sub _error {
+ my ( $mfn, $error, $row ) = @_;
+ $self->_get_logger()->error( "MFN $mfn $error ", dump($row) );
+ }
+
if ( my $fh = $self->{_koha_fh} ) {
if ( my $marc = $row->{marc} ) {
- print $fh $marc;
+ if ( length($marc) != substr( $marc, 0, 5 ) ) {
+ _error $mfn => "wrong length " . length($marc), $row;
+ } elsif ( $marc !~ /\x1E\x1D$/ ) {
+ _error $mfn => "wrong end", $row;
+ } else {
+ print $fh $marc;
+ }
} else {
- warn "MFN $mfn no marc in ",dump($row);
+ _error $mfn => "no marc",$row;
}
}