groonga(単体サーバ)で大量データロード

groonga(単体サーバ)で大量のデータをロードする場合はファイルにloadコマンド+データを書いて、標準入力にリダイレクトしましょう。

データはJSON形式なのでこんな感じで適当に作れます。

use strict;
use warnings;
use utf8;
use JSON qw(encode_json);

my @load_data;
my $table_name = "Foo";

#do something

my $json_data = encode_json(\@load_data);

print <<"__EOS__";
load --table $table_name
$json_data
__EOS__

あとは、以下の様にすればデータをロードできます。

スタンドアローンモード
groonga /path/to/db < /path/to/data
クライアントモード
groonga -c hostname < /path/to/data
追記

これを応用すれば、CSVなどからデータをインポートするツールを作るとかもできますね。

さらに追記

一旦ファイルに出さずとも、パイプで groonga コマンドの標準入力に渡すことでもいけますね。