如何在oracle中的现有表上生成DDL脚本?我正在开发一个项目,我必须重新创建Oracle表中存在的一些表到Hive中.
a_h*_*ame 14
如果您的SQL客户端不支持此功能,那么您可以使用该dbms_metadata
软件包获取数据库中几乎所有内容的源代码:
对于表使用这样的东西:
select dbms_metadata.get_ddl('TABLE', 'YOUR_TABLE_NAME')
from dual;
Run Code Online (Sandbox Code Playgroud)
您也可以同时对所有表执行此操作:
select dbms_metadata.get_ddl('TABLE', table_name)
from user_tables;
Run Code Online (Sandbox Code Playgroud)
并将输出假脱机为SQL脚本.
更多详细信息请参见手册:http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_metada.htm
只是扩大@a_horse_with_no_name的答案。使用DBMS_METADATA
,您可能必须照顾格式SQL*Plus
以便正确获得输出。
例如,我要获取DDL
for 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>
Run Code Online (Sandbox Code Playgroud)
但是,那不是我所期望的。
因此,正确设置格式会给我我想要的输出
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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39051 次 |
最近记录: |