From 72dea0e737d368cd5faee75647f07fdfcc7dbb60 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 12 Jun 2011 19:59:05 +0200 Subject: [PATCH] insert data into koha --- ferlib2koha.pl | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/ferlib2koha.pl b/ferlib2koha.pl index 8c0af5f..fd94298 100755 --- a/ferlib2koha.pl +++ b/ferlib2koha.pl @@ -7,8 +7,8 @@ use Data::Dump qw/dump/; $|++; my $f = DBI->connect("dbi:SQLite:dbname=knjiznica.sqlite","","", { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; -$f->{unicode} = 1; -my $k = DBI->connect("dbi:SQLite:dbname=knjiznica.sqlite","","", { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; +$f->{sqlite_unicode} = 1; +my $k = DBI->connect("dbi:mysql:database=koha_fer","","", { RaiseError => 1, AutoCommit => 0, mysql_enable_utf8 => 1 }) || die $DBI::errstr; our $lookup; sub lookup { @@ -28,7 +28,12 @@ sub lookup { warn dump($lookup); } return unless length $s > 1; - return $lookup->{$key}->{$s} || die "no $s in $key ",dump($lookup->{$key}); + if ( ! exists $lookup->{$key}->{$s} ) { + warn "ERROR: no $s in $key\n"; + return $s; + } else { + $lookup->{$key}->{$s}; + } } # select all posts which have been read or unread @@ -56,14 +61,30 @@ select dat_prava_do as dateexpiry -- aktivan as ??, from studk -limit 100 }; my $sth = $f->prepare($sql); $sth->execute; +our $insert; +sub insert { + my ( $table, $row ) = @_; + $insert->{$table} ||= $k->prepare( + "insert into $table (" + . join(',', keys %$row) + . ") values (" + . join(',', map { '?' } keys %$row ) + . ")" + ); + $insert->{$table}->execute( values %$row ); + warn "# inserted ", dump $row; + +} + while (my $row = $sth->fetchrow_hashref ) { + warn dump $row; + # poor man's (sqlite) outer join $row->{'country'} = lookup('drzava', 'ozn_drzava', 'naz_drzava', $row->{'country'} ); $row->{'city'} = lookup('mjesto', 'post_ozn', 'naz_mjesto', $row->{'city'} ); @@ -77,7 +98,11 @@ while (my $row = $sth->fetchrow_hashref ) { $row->{sex} =~ s/Ž/F/; - warn dump $row; + + $row->{city} ||= '?'; # not null + + insert 'borrowers' => $row; } +$k->commit; -- 2.20.1