非常に単純なExcelスプレッドシート用に、WinXP(バージョン:Excel 97-2000)でユーザーDSNODBCデータソースを設定しました。
A_NUMBER A_DATE A_STRING
1001 10/1/2012 Red
1002 10/2/2012 Green
1003 10/3/2012 Blue
次のGroovyスクリプト(Groovyバージョン:1.7.8 JVM:1.6.0_10)を実行してデータを読み取ると
import groovy.sql.Sql
def static main(def args) {
def dbParameters = [url: 'jdbc:odbc:mySpreadSheet', user:'', password:'', driver: 'sun.jdbc.odbc.JdbcOdbcDriver']
def sql = Sql.newInstance(dbParameters)
sql.eachRow('select * from [Sheet1$]') { row ->
println "${row.A_NUMBER} ${row.A_DATE} ${row.A_STRING}"
}
sql.close()
println "done???"
}
次の出力が生成されます。
1001.0 2012-10-01 00:00:00.0 Red
1002.0 2012-10-02 00:00:00.0 Green
1003.0 2012-10-03 00:00:00.0 Blue
done???
しかし、それは決して終了しません!
Windowsのコマンドプロンプトとcygwinbashシェルから実行しようとしましたが、どちらの場合も、ctrl-cで強制終了するまでハングします。
追加することで、スクリプトを強制的に終了できます
throw new RuntimeException("force exit")
printlnの後ですが、それはかなり極端に思えます。
スクリプトがハングしている理由はありますか?