首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 9i 輕鬆取得建表與索引 DDL:DBMS_METADATA 實戰取代 Export/腳本

     編輯:Oracle 資料庫相關知識

9i 前取得 DDL 僅能 EXP ROWS=N (格式難用) 或寫複雜字典查詢腳本 (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/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