Oracle中获取TABLE的DDL语句的方法
在获取表的DDL的时候,可以使用多种方法进行获取:
1、利用 DBMS_METADATA.GET_DDL,获取表的 DDL 语句
2、imp.indexfile
3、impdp.sqlfile
1、利用 DBMS_METADATA.GET_DDL,获取表的 DDL 语句方法1:
SQL PLUS中执行:
首先运行setechooffsetheadingoffsetfeedbackoffsetverifyoffsetpagesize0setlinesize132defineschema=&1输入schema的名字然后执行:defineCR=chr(10)defineTAB=chr(9)colxnoprintcolynoprintSELECTTABLE_NAMEY,0X,'CREATETABLE'||RTRIM(TABLE_NAME)||'('FROMDBA_TABLESWHEREOWNER=UPPER('&schema')UNIONSELECTTC.TABLE_NAMEY,COLUMN_IDX,DECODE(COLUMN_ID,1,'',',')||RTRIM(COLUMN_NAME)||&TAB||&TAB||RTRIM(DATA_TYPE)||RTRIM(DECODE(DATA_TYPE,'DATE',NULL,'LONG',NULL,'NUMBER',DECODE(TO_CHAR(DATA_PRECISION),NULL,NULL,'('),'('))||RTRIM(DECODE(DATA_TYPE,'DATE',NULL,'CHAR',DATA_LENGTH,'VARCHAR2',DATA_LENGTH,'NUMBER',DECODE(TO_CHAR(DATA_PRECISION),NULL,NULL,TO_CHAR(DATA_PRECISION)||','||TO_CHAR(DATA_SCALE)),'LONG',NULL,'******ERROR'))||RTRIM(DECODE(DATA_TYPE,'DATE',NULL,'LONG',NULL,'NUMBER',DECODE(TO_CHAR(DATA_PRECISION),NULL,NULL,')'),')'))||&TAB||&TAB||RTRIM(DECODE(NULLABLE,'N','NOTNULL',NULL))FROMDBA_TAB_COLUMNSTC,DBA_OBJECTSOWHEREO.OWNER=TC.OWNERANDO.OBJECT_NAME=TC.TABLE_NAMEANDO.OBJECT_TYPE='TABLE'ANDO.OWNER=UPPER('&schema')UNIONSELECTTABLE_NAMEY,999999X,')'||&CR||'STORAGE('||&CR||'INITIAL'||INITIAL_EXTENT||&CR||'NEXT'||NEXT_EXTENT||&CR||'MINEXTENTS'||MIN_EXTENTS||&CR||'MAXEXTENTS'||MAX_EXTENTS||&CR||'PCTINCREASE'||PCT_INCREASE||')'||&CR||'INITRANS'||INI_TRANS||&CR||'MAXTRANS'||MAX_TRANS||&CR||'PCTFREE'||PCT_FREE||&CR||'PCTUSED'||PCT_USED||&CR||'PARALLEL(DEGREE'||RTRIM(DEGREE)||')'||&CR||'TABLESPACE'||RTRIM(TABLESPACE_NAME)||&CR||'/'||&CR||&CRFROMDBA_TABLESWHEREOWNER=UPPER('&schema')ORDERBY1,2;
方法2:
setpagesize0setlong90000setfeedbackoffsetechooffspooltable_ddl.sqlselectdbms_metadata.get_ddl('TABLE','tablename','username')fromdual;selectdbms_metadata.get_ddl('VIEW','viewname','username')fromdual;selectdbms_metadata.get_ddl('INDEX','indexname','username')fromdual;spooloff;2、imp.indexfile
1)先导出用户的数据[oracle@oracle11g~]$expdemo/demofile=test.dmpowner=demolog=test.log;2)从dump文件获取这些DDL语句[oracle@oracle11g~]$impdemo/demofile=test.dmpfromuser=demotouser=demoindexfile=test.sql;3、impdp.sqlfile
导出用户数据[oracle@oracle11g~]$expdpdemo/demodirectory=DATA_PUMP_DIRdumpfile=sqlfile.dmpschemas=demo;获取DDL语句[oracle@oracle11g~]$impdpdemo/demodirectory=DATA_PUMP_DIRdumpfile=sqlfile.dmpsqlfile=demo.sql;
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。