CREATE TABLEの解析
EntityGeneratorに使っていたSQLの解析ルーチンが仕事に使えそうなので、Oracle対応なんかしてみたり。
Oracle Developer Tools for Visual Studio .NETが吐き出すCREATE TABLE文は、こんな感じ。
CREATE TABLE "MY"."USERS" ("NAME" VARCHAR2(32 BYTE),"AGE" NUMBER) TABLESPACE "USERS" PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 65536 MAXEXTENTS 2147483645 MINEXTENTS 1 ) / CREATE UNIQUE INDEX "MY"."SYS_C007336" ON "MY"."USERS" ("NAME" ) TABLESPACE "USERS" / ALTER TABLE "MY"."USERS" ADD ( CONSTRAINT "SYS_C007336" PRIMARY KEY ("NAME") USING INDEX "MY"."SYS_C007336" ENABLE VALIDATE ) /
これを解析させるために、以下の修正を追加。
- ダブルクォテーションに括られた識別子に対応
- VARCHAR2、NUMBERに対応
- VARCHAR2のサイズ指定のBYTEやCHARに対応
- TABLE SPACE句やSTORAGE句を無視
- CREATE TABLE文がセミコロンで終わらなくても良い
- CREATE TABLE文以外が含まれていても無視
しかし、ここまでやってから言うのも何ですが、データベースアクセスしてスキーマ情報取得した方が簡単だよね・・・
(追記)
http://www.asahi-net.or.jp/~sy7a-ht/diary/EntityBuilder.zip
ソースコードと使い方のサンプルを転がしておきます。