民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS groovy から h2 を使ってみるテスト(1)

<<   作成日時 : 2009/08/09 20:57   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

groovy で埋め込みモードの h2 のテストに取り掛かった。
油断すると、CSVファイルの1行目が飛ぶということがわかった。

今回のテストは以下のとおり。

とりあえず、
test.csv という名前で

1,"アンドウ ヒロシゲ",80
2,"イトウ ヒロフミ",60
3,"ウキタ ヒデイエ",70
4,"エンドウ シュウサク",70
5,"オオタ ドウカン",80

こんなファイルを Shift_JIS で作って保存した。

そして、test.groovy という名前で

import groovy.sql.Sql;
sql = Sql.newInstance("jdbc:h2:MyDB", "sa", "", "org.h2.Driver");
sql.execute("DROP TABLE IF EXISTS result");
sql.execute("CREATE TABLE result(id INT, name VARCHAR(20), score INT)");
sql.execute("INSERT INTO result SELECT * FROM CSVREAD('h2.csv', NULL, 'MS932')");
sql.eachRow("SELECT * FROM result", { println "${it.id} ${it.name} ${it.score}"});

こんなテストスクリプトを書いて、
groovy -classpath h2\bin\h2-1.1.116.jar test.groovy
というように実行してみた。

その結果が

2 イトウ ヒロフミ 60
3 ウキタ ヒデイエ 70
4 エンドウ シュウサク 70
5 オオタ ドウカン 80

なんか1行足りない。

もう一度スクリプトを見直して、CSVREAD という H2 組込関数の引数を書き直し

import groovy.sql.Sql;
sql = Sql.newInstance("jdbc:h2:MyDB", "sa", "", "org.h2.Driver");
sql.execute("DROP TABLE IF EXISTS result");
sql.execute("CREATE TABLE result(id INT, name VARCHAR(20), score INT)");
sql.execute("INSERT INTO result SELECT * FROM CSVREAD('test.csv', 'id, name, score', 'MS932')");
sql.eachRow("SELECT * FROM result", { println "${it.id} ${it.name} ${it.score}"});

とやると、無事

1,"アンドウ ヒロシゲ",80
2,"イトウ ヒロフミ",60
3,"ウキタ ヒデイエ",70
4,"エンドウ シュウサク",70
5,"オオタ ドウカン",80

という結果を得ることができた。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
groovy から h2 を使ってみるテスト(1) 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる