從Oracle中匯出SQL語句

2021-08-30 23:21:55 字數 2778 閱讀 1044

[b][color=green][size=large]oracle獲取ddl(create table)的幾種常用的方法[/size][/color][/b]

一、可以通過toad、plsql develop等第三方工具進行匯出dll操作,用這種辦法的好處在於操作簡單方便,但需要安裝,下面簡單介紹一下用這兩個工具獲得dll語句的操作。

二、直接通過exp/imp工具

oracle提供的最原始最實用的匯入匯出工具,我們大體上可以分為三種辦法實現匯出ddl。

a. 通過imp指定indexfile引數,但這種辦法不爽在於有每行前會有rem

語法大體如下:

exp userid=... tables=emp rows=n file=emp.dmp

imp userid=... file=emp.dmp indexfile=emp.sql

b. 通過imp指定show=y,同時指定log引數,格式上也不是很爽,在格式上很美觀的還是通過工具匯出的比較美觀

語法大體如下:

exp userid=... tables=emp rows=n file= emp.dmp

imp userid=... file= emp.dmp show=y log=emp.sql

c. 利用unix下有strings命令,語法大體如下,這種方法比較野蠻:

exp userid=... tables=tab1 rows=n file=tab1.dmp

strings emp.dmp >emp.sql

emp.sql中就有dll語句了

三、通過9i的dbms_metadata包得到dll語句

基本上用到的語法如下:

a. 獲取單個的建表和建索引的語法

set heading off;

set echo off;

set pages 999;

set long 90000;

spool dept.sql

select dbms_metadata.get_ddl('table','dept','scott') from dual;

select dbms_metadata.get_ddl('index','dept_idx','scott') from dual;

spool off;

b.獲取乙個schema下的所有建表和建索引的語法,以scott為例:

set pagesize 0

set long 90000

set feedback off

set echo off

spool scott_schema.sql

connect scott/tiger;

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;

c. 獲取某個schema的建全部儲存過程的語法

connect brucelau /brucelau;

spool procedures.sql

select dbms_metadata.get_ddl('procedure',u.object_name) from user_objects u where object_type = 'procedure';

spool off;

另:dbms_metadata.get_ddl('table','tab1','user1')

三個引數中,第乙個指定匯出ddl定義的物件型別(此例中為表型別),第二個是物件名(此例中即表名),第三個是物件所在的使用者名稱。

[b][color=green][size=large]oracle獲取dml(insert into)的方法[/size][/color][/b]

有些時候我們需要把oracle裡的資料匯入其他資料庫裡。生成insert into 表名 .... 是一種很簡單直接的方法。

今年六月份從www.arikaplan.com/oracle.html看到乙個可以生成insert into 表名 ....語句的儲存過程genins_output。按中文習慣的時間格式yyyy-mm-dd hh24:mi:ss改了改,並新寫了乙個儲存過程genins_file.sql。

它可以把小於16383條記錄表裡的資料導成(insert into 表名 ....)os下檔案。

呼叫它之前,dba要看看資料庫的初始化引數 utl_file_dir 是否已經正確地設定:

sql> show parameters utl_file_dir;

可以看到該引數的當前設定。

如果沒有值,必須修改資料庫的initsid.ora檔案,將utl_file_dir 指向乙個你想用pl/sql file i/o 的路徑。重新啟動資料庫。此引數才生效。

呼叫它,可以把表裡的資料生成(insert into 表名 ....)os下檔案的過程genins_file方法:

sql>exec genins_file('emp','/oracle/logs','insert_emp.sql');

|    |      |

表名,可變 |   生成os下檔名,可變

|utl_file_dir路徑名,不變(我設定的是/oracle/logs)

可以在os目錄/oracle/logs下看到insert_emp.sql檔案。

注意事項: 生成(insert into 表名 ....)os下檔案最多32767行。因為我一條insert分成兩行,所以最多處理16383條記錄的表。

從Oracle資料庫中匯出SQL指令碼

基本上用到的語法如下 a.獲取單個的建表和建索引的語法 set heading off set echo off set pages 999 set long 90000 spool dept.sqlselect dbms metadata.get ddl table dept scott from...

把錶從oracle中匯出來

c documents and settings administrator exp export release 9.2.0.1.0 production on 星期四 12月 7 12 52 05 2006 使用者名稱 peam 口令 連線到 oracle9i enterprise editio...

從oracle資料庫中匯出建表的sql指令碼

基本上用到的語法如下 a.獲取單個的建表和建索引的語法 set heading off set echo off set pages 999 set long 90000 spool dept.sqlselect dbms metadata.get ddl table dept scott from...