Oracle中獲取TABLE的DDL語句的方法
獲取表的DDL的方法
在獲取表的DDL的時候,可以使用多種方法進行獲取:
1、利用 DBMS_METADATA.GET_DDL,獲取表的 DDL 語句
2、imp.indexfile
3、impdp.sqlfile
1、利用 DBMS_METADATA.GET_DDL,獲取表的 DDL 語句
方法1:
SQL PLUS中執行:
首先執行 set echo off set heading off set feedback off set verify off set pagesize 0 set linesize 132 define schema=&1 輸入schema的名字 然後執行: define CR=chr(10) define TAB=chr(9) col x noprint col y noprint SELECT TABLE_NAME Y ,0 X ,'CREATE TABLE ' || RTRIM(TABLE_NAME) || '(' FROM DBA_TABLES WHERE OWNER = UPPER('&schema') UNION SELECT TC.TABLE_NAME Y ,COLUMN_ID X ,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', 'NOT NULL', NULL)) FROM DBA_TAB_COLUMNS TC ,DBA_OBJECTS O WHERE O.OWNER = TC.OWNER AND O.OBJECT_NAME = TC.TABLE_NAME AND O.OBJECT_TYPE = 'TABLE' AND O.OWNER = UPPER('&schema') UNION SELECT TABLE_NAME Y ,999999 X ,')' || &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 || &CR FROM DBA_TABLES WHERE OWNER = UPPER('&schema') ORDER BY 1 ,2;
方法2:
set pagesize 0 set long 90000 set feedback off set echo off spool table_ddl.sql select dbms_metadata.get_ddl('TABLE','tablename','username') from dual; select dbms_metadata.get_ddl('VIEW','viewname','username') from dual; select dbms_metadata.get_ddl('INDEX','indexname','username') from dual; spool off;
2、imp.indexfile
1)先匯出使用者的資料 [oracle@oracle11g ~]$ exp demo/demo file=test.dmp owner=demo log=test.log; 2)從 dump 檔案獲取這些 DDL 語句 [oracle@oracle11g ~]$ imp demo/demo file=test.dmp fromuser=demo touser=demo indexfile=test.sql;
3、impdp.sqlfile
匯出使用者資料 [oracle@oracle11g ~]$ expdp demo/demo directory=DATA_PUMP_DIR dumpfile=sqlfile.dmp schemas=demo; 獲取 DDL 語句 [oracle@oracle11g ~]$ impdp demo/demo directory=DATA_PUMP_DIR dumpfile=sqlfile.dmp sqlfile=demo.sql;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31536355/viewspace-2690829/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 獲取物件DDL語句的方法物件
- Oracle 獲取ddl語句Oracle
- oracle之 獲取建表ddl語句Oracle
- oracle dbms_metadata 獲取ddl語句Oracle
- 如何獲取expdp出來的dmp檔案中的DDL語句
- 用dbms_metadata.get_ddl獲取ddl語句
- 搬運工,oracle獲得ddl語句Oracle
- Oracle 儲存過程中的DDL語句Oracle儲存過程
- Oracle中獲取最低效的 topSQL的語句 (引用)OracleSQL
- Oracle獲取資料庫中的物件建立語句Oracle資料庫物件
- 通過dblink獲取遠端DDL語句
- oracle檢視建立物件的DDL語句Oracle物件
- Oracle從dump檔案中提取DDL語句方法Oracle
- oracle獲取ddl指令碼Oracle指令碼
- 獲取物件的構建語句物件
- 使用SQL語句獲取SQLite中的表定義SQLite
- 執行oracle DDL語句要注意的問題Oracle
- 觸發器中獲取SQL語句觸發器SQL
- 獲取oracle正在處於等待狀態的sql語句的執行計劃的語句OracleSQL
- Oracle 從Dump 檔案裡提取 DDL 語句 方法說明Oracle
- Laravel 獲取執行的sql語句LaravelSQL
- MySQL 的Rename Table語句MySql
- Oracle利用dbms_metadata.get_ddl檢視DDL語句Oracle
- DBMS_METADATA包獲得物件DDL語句物件
- php一句話獲取獲取檔案目錄的方法PHP
- 再論執行oracle DDL語句要注意的問題Oracle
- js 獲取 table 中的每一個tdJS
- dbms_metadata.get_ddl()來獲得物件的定義語句物件
- oracle中的條件語句Oracle
- ORACLE不使用工具的情況下獲取物件DDLOracle物件
- MySQL入門---(一)SQL的DDL語句MySql
- Oracle10g中FLASHBACK TABLE語句快速恢復表Oracle
- 通過DBMS_METADATA.GET_DDL包獲得相關物件ddl語句物件
- 從Export Dumpfile file 中讀出DDL 語句Export
- PL/SQL與DDL語句SQL
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- oracle使用dbms_metadata.get_ddl包檢視DDL語句定義Oracle
- 日誌挖掘-對於DDL語句的挖掘