복붙노트

[SQL] 어떻게 오라클의 기존 테이블에 (또는 GET)는 DDL 스크립트를 생성 할 수 있습니까? I가이 하이브에서 그들을 다시 작성

SQL

어떻게 오라클의 기존 테이블에 (또는 GET)는 DDL 스크립트를 생성 할 수 있습니까? I가이 하이브에서 그들을 다시 작성

어떻게 오라클의 기존 테이블에 DDL 스크립트를 생성 할 수 있습니까? 내가 하이브로 Oracle 테이블에 존재하는 일부 테이블을 다시 만들 필요가 어디 프로젝트를 진행하고있다.

해결법

  1. ==============================

    1.당신의 SQL 클라이언트가이 기능을 지원하지 않는 경우에, 당신은 당신의 데이터베이스에있는 거의 모든 소스를 얻기 위해 DBMS_METADATA 패키지를 사용할 수 있습니다 :

    당신의 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

  2. ==============================

    2.그냥 @의 a_horse_with_no_name의 대답에 약간의 확장. DBMS_METADATA를 사용하면 제대로 출력을 얻기 위해 SQL * 플러스의 형식 알아서해야 할 수도 있습니다.

    그냥 @의 a_horse_with_no_name의 대답에 약간의 확장. DBMS_METADATA를 사용하면 제대로 출력을 얻기 위해 SQL * 플러스의 형식 알아서해야 할 수도 있습니다.

    예를 들어, 나는 SCOTT.EMP 테이블에 대한 DDL을 싶어.

    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>
    
  3. from https://stackoverflow.com/questions/26249892/how-can-i-generate-or-get-a-ddl-script-on-an-existing-table-in-oracle-i-have by cc-by-sa and MIT license