programing

오라클의 기존 테이블에서 addl 스크립트를 생성하거나 가져올 수 있는 방법은 무엇입니까?하이브에서 다시 만들어야 합니다.

bestprogram 2023. 7. 26. 22:16

오라클의 기존 테이블에서 addl 스크립트를 생성하거나 가져올 수 있는 방법은 무엇입니까?하이브에서 다시 만들어야 합니다.

오라클의 기존 테이블에서 DDL 스크립트를 생성하려면 어떻게 해야 합니까?저는 Oracle 테이블에 있는 테이블을 Hive로 다시 만들어야 하는 프로젝트를 진행하고 있습니다.

SQL 클라이언트가 이 기능을 지원하지 않는 경우 다음을 사용할 수 있습니다.dbms_metadata데이터베이스의 거의 모든 항목에 대한 소스를 가져오는 패키지:

테이블의 경우 다음과 같은 것을 사용합니다.

select dbms_metadata.get_ddl('TABLE', 'YOUR_TABLE_NAME')
from dual;

모든 테이블에 대해 동시에 이 작업을 수행할 수도 있습니다.

select dbms_metadata.get_ddl('TABLE', table_name)
from user_tables;

출력을 SQL 스크립트로 스풀합니다.

자세한 내용은 설명서에 나와 있습니다. http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_metada.htm

@a_horse_with_no_name의 답변에 대해 조금 더 설명하겠습니다.사용.DBMS_METADATA의 형식을 처리해야 할 수도 있습니다.SQL*Plus정확한 출력을 얻기 위해.

예를 들어, 나는 그것을 얻고 싶습니다.DDL위해서SCOTT.EMP테이블.

SQL> select dbms_metadata.get_ddl('TABLE', 'EMP')
  2  from dual;

DBMS_METADATA.GET_DDL('TABLE','EMP')
--------------------------------------------------------------------------------

  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),


SQL>

하지만, 그것은 제가 기대했던 것이 아닙니다.

포맷을 올바르게 설정하면 원하는 출력을 얻을 수 있습니다.

SQL> set long 100000
SQL> set head off
SQL> set echo off
SQL> set pagesize 0
SQL> set verify off
SQL> set feedback off
SQL> select dbms_metadata.get_ddl('TABLE', 'EMP')
  2  from dual;

  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),
        "JOB" VARCHAR2(9),
        "MGR" NUMBER(4,0),
        "HIREDATE" DATE,
        "SAL" NUMBER(7,2),
        "COMM" NUMBER(7,2),
        "DEPTNO" NUMBER(2,0),
         CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE,
         CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
          REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"

SQL>

언급URL : https://stackoverflow.com/questions/26249892/how-can-i-generate-or-get-a-ddl-script-on-an-existing-table-in-oracle-i-have