2013年10月7日月曜日

groovyとApache MetaModelでCSVファイルに対してクエリーを実行する

groovyとApache MetaModelでCSVファイルに対してクエリーを実行するには、以下のコードを実行します。
@Grab(group='org.eobjects.metamodel', module='MetaModel-full', version='3.4.5')
import org.eobjects.metamodel.*

dc = DataContextFactory.createCsvDataContext(new File("customers.csv"))
// CSVだとテーブルが1つのみ存在する
table = dc.getDefaultSchema().getTable(0)
// 顧客ランクがgoldの顧客を抽出
query = dc.query().from(table)
  .select("customer_id", "customer_name")
  .where(table.getColumnByName("customer_rank")).equals("gold").toQuery()
// Queryの表示
println query.toString()
// Queryの実行
ds = dc.executeQuery(query)
for(row in ds){
  // 顧客IDと顧客名を表示
  println row.getValue(0) + ":" + row.getValue(1)
}

テスト用CSVファイル
customer_id,customer_name,customer_rank
12045,Brian Snow,none
23012,Andrew Clein,gold
11078,Bob Miller,none
67892,Matthew Brown,gold
1237,Elisabeth Roberts,platinum
動作環境
groovy 2.1.7, JDK7 update40

0 件のコメント:

コメントを投稿