web-dev-qa-db-ja.com

Oracleで主キーと外部キーなしでテーブル作成スクリプトを生成する方法

スキーマとテーブルがたくさんあります。すべてのテーブルの作成スクリプトを生成したいと思います。私は以下のステートメントを使用していますが、それはかなりうまく機能しています。

SELECT DBMS_METADATA.GET_DDL('TABLE','table_name','schema') FROM DUAL

ただし、このステートメントは、テーブルに属するすべてのプライマリおよび外部キースクリプトも生成します。したがって、テーブル作成スクリプトに主キーと外部キーを含めない方法はありますか

2
osman

以下を試すことができます:

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が生成されます。

参照:

4