DapperでORACLEのテーブル定義を抽出する
Dapperを使ってテーブルデータのまるまるコピーバッチを作ってた。
で、コピー元のテーブル定義をコピー先にも反映してよ!!っと言われました。
でも、都合上、DB_LINKが使えない→Create select×
じゃーしょうがないDDL流すか。。。→定義はDB見てね(お約束)
素敵なサイトを発見
http://utsuutsu.blogspot.jp/2010/02/oracle9idbmsmetadatagetddltableindextri.html
DDL取るところまではマルパクリでうまくいきそう。
でもね、この部分、どうやってDapperで流すんだろう。。。
exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR', TRUE ); exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE' , FALSE );
これで出来た^^
Dim objSql As New StringBuilder With objSql .AppendLine("begin") .AppendLine(" DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE', false );") .AppendLine("end;") End With 'ストアド実行 objDbConnection.Execute(objSql.ToString, Nothing, CommandType.Text) objSql.Length = 0 With objSql .AppendLine("begin") .AppendLine(" DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR', true );") .AppendLine("end;") End With 'ストアド実行 objDbConnection.Execute(objSql.ToString, Nothing, CommandType.Text)
後は↑の素敵サイトのSQLをまるっと実行すればOK
めでたしめでたし