JDBCドライバによるテーブル情報の取得
JDBCドライバでちょっと試してみました。
DatabaseMetaDataを利用すれば、かなりいろいろな情報を取得できそうです。
DatabaseMetaDate dbmd = conn.getMetaData(); String schema = "スキーマ名"; String table = "%"; // VIEWや、SYSTEM TABLEは必要な場合 String types[] = { "TABLE", "VIEW", "SYSTEM TABLE" }; ResultSet rs = dbmd.getTables(null, schema, table, types); while (rs.next()) { String tableName= rs.getString("TABLE_NAME"); System.out.println("「" + schema + "/" + tableName + "」"); ResultSet rs2 = dbmd.getColumns(null, schema, tableName, "%"); while (rs2.next()) { System.out.println( rs2.getString("COLUMN_NAME") + " / " + rs2.getString("TYPE_NAME") + " / " + rs2.getString("COLUMN_SIZE")); } }
という感じでしょうか。
実行すると、スキーマにあるテーブルがすべて表示されます。
上はOracleの例です。
PostgreSQLの場合には、
dbmd.getTables(schema, null, table, types); dbmd.getColumns(schema, null, tableName, "%");
実行すると、
「IPManager/user_master」 user_id / bpchar / 20 password / varchar / 50 auth / bpchar / 1 kanji_name_f / varchar / 20 kanji_name_l / varchar / 20 kana_name_f / varchar / 20 kana_name_l / varchar / 20 create_user_id / varchar / 20 create_day / timestamp / 8 renew_user_id / varchar / 20 renew_day / timestamp / 8
のような感じで表示されます*1。
DB2/400(i5、AS/400)の場合はOracleと同様です。schemaの位置にライブラリー名を記述します。