首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 輕鬆取得建表與索引 DDL:DBMS_METADATA 實務指南

     編輯:Oracle 資料庫基礎

9i 前的困境

早期僅能用 EXP ROWS=N 或撰寫複雜字典查詢腳本取得 DDL,格式難直接執行,且對 IOT、嵌套表等複雜物件無效。

9i 起:DBMS_METADATA 一鍵搞定

內建套件可從字典精確還原單一物件或整個 Schema 的 DDL,使用簡單。

1. 取得單一表/索引 DDL

SET HEADING OFF ECHO OFF PAGES 999 LONG 90000
SPOOL get_single.sql
SELECT DBMS_METADATA.GET_DDL('TABLE','SZT_PQSO2','SHQSYS') FROM DUAL;
SELECT DBMS_METADATA.GET_DDL('INDEX','INDXX_PQZJYW','SHQSYS') FROM DUAL;
SPOOL OFF;

輸出結果為標準 CREATE TABLE/CREATE INDEX 陳述式,加上分號即可直接執行。

2. 取得整個 Schema DDL

SET PAGESIZE 0 LONG 90000 FEEDBACK OFF ECHO OFF
SPOOL get_schema.sql
CONNECT shqsys/shqsys@hawk1;
SELECT DBMS_METADATA.GET_DDL('TABLE', u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX', u.index_name) FROM USER_INDEXES u;
SPOOL OFF;

注意事項

若表含外鍵參考約束,重建時需依參考順序(父表先於子表)。可查詢 DBA_CONSTRAINTS 與 DBA_CONS_COLUMNS 判斷相依順序。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved