獲取資料庫或SHEME的DDL語句

2021-09-01 17:16:10 字數 4773 閱讀 9695

在9i以後,可以利用dbms_metadata.get_ddl包得到資料庫的物件的ddl指令碼。以下語句均在sqlplus中執行

1. 獲取單個的建表、檢視和建索引的語法

1 set pagesize 0

2 set long 90000

3 set feedback off

4 set echo off

5 spool dept.sql

6   --以下引數可以根據實際情況開啟或關閉

7     --輸出資訊採用縮排或換行格式化

8     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'pretty', true);

9     --確保每個語句都帶分號

10     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'sqlterminator', true);

11     --關閉表索引、外來鍵等關聯(後面單獨生成)

12     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'constraints', false);

13     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'ref_constraints', false);

14     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'constraints_as_alter', false);

15     --關閉儲存、表空間屬性

16     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'storage', false);

17     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'tablespace', false);

18     --關閉建立表的pctfree、nocompress等屬性

19     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'segment_attributes', false);

20    

21     --表

22     select dbms_metadata.get_ddl('table','tab_name','hr') from dual; --表名(tab_name)   sechema(hr)

23     --檢視

24     select dbms_metadata.get_ddl('view','view_name','hr') from dual;

25     --索引

26     select dbms_metadata.get_ddl('index','idx_name','hr') from dual;

27 spool off;

2. 獲取乙個schema下的所有建表、檢視和建索引的語法,以hr為例:

1 2. 獲取乙個schema下的所有建表、檢視和建索引的語法,以hr為例:

2 set pagesize 0

3 set long 90000

4 set feedback off

5 set echo off

6 spool schema.sql

7 connect hr/hr12345; --當前所連線使用者

8 9     --輸出資訊採用縮排或換行格式化

10     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'pretty', true);

11     --確保每個語句都帶分號

12     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'sqlterminator', true);

13     --關閉表索引、外來鍵等關聯(後面單獨生成)

14     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'constraints', false);

15     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'ref_constraints', false);

16     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'constraints_as_alter', false);

17     --關閉儲存、表空間屬性

18     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'storage', false);

19     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'tablespace', false);

20     --關閉建立表的pctfree、nocompress等屬性

21     exec dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'segment_attributes', false);

22    

23     --表

24     select dbms_metadata.get_ddl('table',u.table_name) from user_tables u;--獲取當前使用者的ddl語句

25     --檢視

26     select dbms_metadata.get_ddl('view',u.view_name) from user_views u;

27     --索引

28     select dbms_metadata.get_ddl('index',u.index_name) from user_indexes u;

29 spool off;

3. 獲取hr下的全部儲存過程的語法

1 set pagesize 0

2 set long 90000

3 set feedback off

4 set echo off

5 spool procedures.sql

6 connect hr/hr12345;

7  

8  

9     select   dbms_metadata.get_ddl('procedure',u.object_name)

10     from     user_objects u

11     where     object_type = 'procedure';

12 spool off;

4. 獲取hr下的全部函式的語法

1 set pagesize 0

2 set long 90000

3 set feedback off

4 set echo off

5 spool function.sql 

6 connect hr/hr12345;

7     select   dbms_metadata.get_ddl('function',u.object_name)

8     from     user_objects u

9     where    object_type = 'function';

10 spool off;

複製**

5.得到所有表空間的ddl語句

複製**

1 set pagesize 0

2 set long 90000

3 set feedback off

4 set echo off

5 spool tablespace.sql

6 7     select dbms_metadata.get_ddl('tablespace', ts.tablespace_name)

8     from dba_tablespaces ts;

9 10 spool off;

複製**

6.得到所有建立使用者的ddl

複製**

1 set pagesize 0

2 set long 90000

3 set feedback off

4 set echo off

5 spool user.sql

6 7     select dbms_metadata.get_ddl('user',u.username)

8     from dba_users u;

9 10 spool off;

複製**

通過以上sql的組合,可以獲取到乙個資料庫或schema的邏輯結構

DDL(資料庫使用)

1.庫的建立 建立資料庫 create database dbname 資料庫名 建立資料庫,字符集設定為utf 8 create database base2 character set utf8 2.檢視資料庫 檢視所有的資料庫 show databases 檢視某個庫的建立資訊 show cr...

資料庫DDL操作

ddl 1.資料庫操作 檢視所有資料庫 show databases 切換 選擇要操作的 資料庫 use 資料庫名 建立資料庫 create database if not exists mydb1 charset utf8 刪除資料庫 drop database if exists mydb1 修...

資料庫MYSQL的DDL語言

ddl 資料定義語言,主要涉及了庫和標的管理 一 庫的管理 建立 修改 刪除 二 表的管理 建立 修改 刪除 建立 create 修改 alter 刪除 drop 一 庫的管理 1.庫的建立 create database if not exists books 2.庫的修改,更改庫的字符集。alt...