スキーマとテーブルがたくさんあります。すべてのテーブルの作成スクリプトを生成したいと思います。私は以下のステートメントを使用していますが、それはかなりうまく機能しています。
SELECT DBMS_METADATA.GET_DDL('TABLE','table_name','schema') FROM DUAL
ただし、このステートメントは、テーブルに属するすべてのプライマリおよび外部キースクリプトも生成します。したがって、テーブル作成スクリプトに主キーと外部キーを含めない方法はありますか
以下を試すことができます:
set pagesize 0
set long 90000
exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM, 'CONSTRAINTS',false);
exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM, 'REF_CONSTRAINTS',false);
SELECT DBMS_METADATA.GET_DDL( 'TABLE','table_name','schema') FROM DUAL;
これにより、インデックスと外部キーのないDDLが生成されます。
参照: