programing

DBMS_METadata를 사용하여 스키마 이름이 없는 개체에 대한 DDL 스크립트를 생성하는 중입니다.GET_DDL?

goodsources 2023. 10. 13. 22:04
반응형

DBMS_METadata를 사용하여 스키마 이름이 없는 개체에 대한 DDL 스크립트를 생성하는 중입니다.GET_DDL?

다음을 사용하여 개체에 대한 DDL 스크립트를 생성하려면 어떻게 해야 합니까?DBMS_METADATA.GET_DDL스키마 이름이 구워지지 않은 상태에서?

와 함께DBMS_METADATA.GET_DDL:

CREATE TABLE "MYSCHEMA"."MYTABLE"
(
  "COL1"  NUMBER(10,0)
)

SQL 개발자도 그렇게 할 수 있고 DBMS_METADA도 사용하고 있다고 생각합니다.TA는 이러한 목표를 달성하고 일반적인 DDL 스크립트를 제공합니다.

SQL 개발자 사용:

CREATE TABLE "MYTABLE"
(
  "COL1"  NUMBER(10,0)
)

최근에 스키마 이름 없이 ddl을 얻을 수 있는 다음을 우연히 발견했습니다.

Oracle 문서에는 포함되어 있지 않지만 지금까지 본 다른 방법보다 훨씬 간단해 보입니다.스키마 이름 없이 ddl을 생성하는 SQL 개발자의 Statements Log in SQL Developer에서 발견했습니다.

DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'EMIT_SCHEMA', false);

DBMS_METADATA를 호출하기 전에 핸들이나 기타 고약한 작업을 수행할 필요는 없습니다.GET_DDL

REMAP_SCHEMA 옵션과 함께 SET_REMAP_PARAM 사용:

DBMS_METADATA.SET_REMAP_PARAM(th,'REMAP_SCHEMA','HR',NULL);

이렇게 하면 HR 스키마가 NULL로 매핑됩니다(그러나 작업 핸들이 필요합니다). 전체 예는 metadata_api 설명서를 참조하십시오.

스토리지 및 기타 속성을 제거하려면 스키마 제거 이외에도(위의 David Norris가 제안한 대로)기본적으로 단순한 DDL을 사용한 다음 아래와 같이 사용합니다.

BEGIN
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'SQLTERMINATOR', TRUE);
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'PRETTY', TRUE);
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'SEGMENT_ATTRIBUTES', FALSE);
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'STORAGE', FALSE);      
DBMS_METADATA.set_transform_param (DBMS_METADATA.session_transform, 'EMIT_SCHEMA', FALSE);
END;

언급URL : https://stackoverflow.com/questions/6782278/generating-ddl-script-for-object-without-schema-name-baked-in-using-dbms-metadat

반응형