X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=koha%2Fkoha2riak-search.pl;h=be3d1458964bd58b3ab6adab9bf10d014d7a640c;hb=258ea9ebd2bb0f1d24d6659abae617f3a1fe97f4;hp=2fb5b4bd980b071c5051352a200be90fc9d4efb7;hpb=5b7b61b6a53b9e3ea9e259aecc5b30b2ec988c6c;p=NoSQL-toys.git diff --git a/koha/koha2riak-search.pl b/koha/koha2riak-search.pl index 2fb5b4b..be3d145 100755 --- a/koha/koha2riak-search.pl +++ b/koha/koha2riak-search.pl @@ -6,35 +6,38 @@ use RiakSearch; use Data::Dump qw/dump/; -my ( $riak_url, $dbi ) = @ARGV; +my ( $riak_url, $table, $dbi ) = @ARGV; $riak_url ||= 'http://10.60.0.92:8098'; -$dbi ||= 'DBI:mysql:dbname=koha;host=10.60.0.10;port=3306'; -my @tables = qw( -biblioitems -biblio -); +$table ||= 'biblioitems'; +$dbi ||= 'DBI:mysql:dbname=koha;host=10.60.0.10;port=3306'; -my $limit; -$limit = $ENV{LIMIT} if $ENV{LIMIT}; +my $batch_size = 1000; my $dbh = DBI->connect($dbi,"","") || die $DBI::errstr; my $riak = RiakSearch->new( $riak_url ); +#$riak->{args} = 'w=2'; -warn $riak->request( 'GET' => '/koha.marcxml' ); sub riak_search_kv_hook { - $riak->request( 'PUT' => shift, { props => { + my $bucket = shift; + $riak->request( 'PUT' => $bucket, { props => { precommit => [ { mod => 'riak_search_kv_hook', fun => 'precommit' } ], # precommit => [], # last_write_wins => 'true', } }); + warn "riak_search_kv_hook $bucket ", $riak->request( 'GET' => '/koha.marcxml' ); } riak_search_kv_hook 'koha.marcxml'; +riak_search_kv_hook "koha.$table"; -foreach my $table ( @tables ) { +my $offset = 0; +while(1) { + + my $limit = "LIMIT $batch_size OFFSET $offset"; + warn "SELECT * FROM $table $limit\n"; my $sth = $dbh->prepare(qq{ select * from $table $limit}) || die $dbh->errstr(); $sth->execute || die $sth->errstr(); @@ -42,8 +45,6 @@ foreach my $table ( @tables ) { print "import ", $sth->rows, " rows from $table pk:",dump( @pk ),"...\n"; - riak_search_kv_hook "koha.$table"; - while (my $row = $sth->fetchrow_hashref() ) { my $key = join('_', map { $row->{$_} } @pk); @@ -59,10 +60,19 @@ foreach my $table ( @tables ) { # warn "## $key ",dump($row); my $headers; - $headers->{Link} = qq|; riaktag="biblio"| - if $biblionumber && $key !~ m/biblionumber/; + foreach my $reference ( qw(biblio biblioitem) ) { + my $col = $reference . 'number'; + next if $key =~ m/$col/; + my $number = $row->{$col} || next; + push @{ $headers->{Link} }, qq|; riaktag="$reference"|; + } $riak->request( 'PUT' => "/koha.$table/$key", $row, $headers ); } + $offset += $sth->rows; + last if $sth->rows < $batch_size; + } + +warn "END total_rows $offset\n";