Groovyでテーブルのデータを取得したい(2)

GroovyでOracleデータベースに接続して、データを取得するサンプルです。

import java.text.*
def sql = groovy.sql.Sql.newInstance(
'jdbc:oracle:thin:@localhost:1521:ORCL','username','password','oracle.jdbc.driver.OracleDriver')

def username = "create_user"
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
sql.eachRow("SELECT table_name FROM user_tables WHERE table_name LIKE 'BIZ_AB_%'"){ rs->
    def rows = sql.rows("SELECT * FROM " + rs.table_name +" WHERE create_user_cd ='" + username + "'")
    if( rows.size() > 0 ){
        def f = new File(rs.table_name+".csv").newWriter("Shift_JIS")
        boolean isWroteHeader = false
        for(r in rows){
            r["CREATE_DATE"] = sdf.format(r["CREATE_DATE"].dateValue())
            r["RECORD_DATE"] = sdf.format(r["RECORD_DATE"].dateValue())
            if(!isWroteHeader){
                f.writeLine( r*.key.join(",") )
                isWroteHeader = true
            }
            f.writeLine( r*.value.join(",") )
        }
        f.close()
    }
}


前回のVBAのようにExcelに書き出す方式ではなく、まずはCSVファイルに出力する方式にしました。
簡単に書ける上、コードが短いのですっきりします。
OracleのTimeStamp型が変換しないとオブジェクトの文字列になってしまうため、変換しています。


調べてみると、DataSet型というものがあって、

def rows = sql.rows("SELECT * FROM " + rs.table_name +" WHERE create_user_cd ='" + username + "'")

は、

//def mySet = sql.dataSet("SELECT * FROM " + rs.table_name).findAll{ it.create_user_cd == ${username} } ←間違い(^^;
def mySet = sql.dataSet(rs.table_name).findAll{ it.create_user_cd == ${username} }

といったような書き方ができるらしいのですが、以下のエラーが表示され、どうしてもうまくいきません。。。


Caught: groovy.lang.GroovyRuntimeException: Could not find the ClassNode for MetaClass:
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass@1142196[class DbTools$_test2_closure4]


検索してみると、http://jira.codehaus.org/browse/GROOVY-2450 がヒットするのですが、このチケットはクローズされています。
他のGroovy関連のページでは、DataSetのfindAllは沢山見かけるのですが、皆さんは正常に実行できているのでしょうか。。。
最初は、Groovyのバージョンがいけないのだと思い、最新安定バージョンの1.7.10を実行してNG。
1.5.4/1,5.8もNG。さらに1.8.0-RC4まで試して全部NG。


簡単なSELECT操作とINSERT操作であれば、DataSetを使用したら簡単そうなので、ぜひ使用したいところなんですが。。。
何か情報が分かりましたらUPしたいと思います。
今度は、EXCELへ出力するように改造すべく、Scriptomにチャレンジする予定です。