次のコマンドを使用して、OracleデータベースのEXPDAT.DMP
ファイルを生成しました。
exp userid=usr/pass@db owner=own rows=n compress=n
次に、次のコマンドを実行して、「Create Table ...」ステートメントを含むファイルを生成しました。
imp userid=usr/pass@db full=y indexfile=output.sql
これはCreate Tableステートメントに最適ですが、Create Procedure/Create Function/Create View source codeも必要です。 .DMPファイルでそれらを見ることができますが、それらを抽出する方法が見つかりません。
EXPDAT.DMPファイルからこの情報を抽出することは可能ですか?または、別の方法を使用する必要がありますか?
目的は、ソース管理可能なファイルにソースをエクスポートできるようにすることです。
元のデータベースにアクセスできる場合は、DBMS_METADATA.GET_DDLを使用します。
UTL_FILEを使用してスクリプトを作成し、(USER_OBJECTSからの)各オブジェクトを通過し、名前とタイプを使用してオブジェクトを抽出し、適切な命名規則を持つファイルに書き込むことができます。
単一のファイルを分割するよりもずっとクリーンになります。
[〜#〜] show [〜#〜] パラメータを使用して、DDLを確認します。
imp userid=usr/pass@db full=y show=y log=imp.log
従来のエクスポートの代わりにdatapump(expdp、impdp)ユーティリティを使用できる場合は、sqlfileコマンドを使用できます。
-expdpを取る
expdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT
-以下のimpdpはインポートされません。fullcode.sqlファイルにすべてのオブジェクトコードが生成されます。
impdp dumpfile=full.dmp logfile=full.log directory=EXP_DIR schemas=SCOTT content=metadata_only sqlfile=fullcode.sql