2009年10月17日土曜日

groovyとPostgreSQLでインデックスを一覧表示する

groovyとPostgreSQLでインデックスを一覧表示するには、以下のコードを実行します。


import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:postgresql://localhost:5432/jtrac",
"postgres",
"postgres",
"org.postgresql.Driver")

table = "users"
query = """select
pgc.relname as index_name,
pgct.relname as table_name,
pg_get_indexdef(pgi.indexrelid) as definition
from
pg_index pgi
join pg_class pgc
on (pgc.oid = pgi.indexrelid)
join pg_class pgct
on (pgct.oid = pgi.indrelid)
where
pgct.relname = ${table}
"""

sql.eachRow(query){
// インデックス名
println "index_name:${it.index_name}"
// インデックスが貼られているテーブル名
println "table_name:${it.table_name}"
// インデックスの定義
println "definition:${it.definition}"
println "----"
}


動作環境
Groovy 1.6.3, JDK6 Update16, Postgres 8.4.0,
8.4-701JDBC4

関連情報
pg_index
http://www.postgresql.org/docs/8.4/interactive/catalog-pg-index.html

pg_get_indexdef
http://www.postgresql.org/docs/8.4/interactive/functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE

0 件のコメント:

コメントを投稿