ちょっとだけ書いたメモ(2)
昨日の続き。
テーブルの形を知らずに Insert だけぶち込むのは、INSERT 文をむりくり生成してやればできなく無いのだけど、その場合文字列とか日付型とか、利用者側が型を意識しなくてはならず、扱いがめんどい。
というか TSV 作るときは、値だけあってればいちいちダブルクォートとか色々やりたくないと思うのだ。
なら、INSERT を行う前に、動的にスキーマをぶっこ抜く必要があって、まだ実行してないけどこんな感じでいけそう?(間違ってたらそのうち直す)
// connection は java.sql.Connection DatabaseMetaData metaData = connection.getMetaData(); try (ResultSet rs = metaData.getColumns(null, schemaName, tableName, "%")) { while (rs.next()) { rs.getString("COLUMN_NAME"); rs.getInt("TYPE_NAME"); rs.getInt("COLUMN_SIZE"); } }
と言うような事が以下から読めた。
ちなみに、TYPE_NAME で拾ってこれるのが整数なのだけど、java.sql.Types
内に整数定義が存在してるので、switch なり ==
なりで型を拾えるらしい。
これで型を拾って型変換コンバータに食わせればいいっぽいかな?
よく Java の O/R マッパー関連が、テーブル定義を引っこ抜いてる臭い挙動をしてたので、あるんだろうなーと思って探したら案の定あった系。
要するに誰かの出来るものは、だいたいの場合、探せば見つかる。
見つからないのは特許系のアルゴリズム(苦笑