導出存儲過程
Oracle批量導出存儲過程
法一:
PL/sql工具導出
法二:
Sql代碼
SET echo off;
SET heading off;
SET feedback off;
spool C:\Documents and Settings\Administrator\桌面\proc.sql;--1、用sys用戶等陸的話:
Sql代碼
select text from dba_source where owner= 'lingfeng' and type = 'PROCEDURE';--2、用一般用戶(要導出其下存儲過程的用戶):
Sql代碼
select text from user_source;
spool off;
法三:(自己寫存儲過程導出)
1.創建DIRECTORY
Sql代碼
create or replace directory PROCE_DIR as 'C:/Documents and Settings/Administrator/桌面';如創建報沒許可權的錯誤,則以system的用戶登錄,給當前用戶賦權--賦權語句
Sql代碼
grant create any directory to bijian;
--撤權語句
Sql代碼
revoke create any directory from bijian;
創建之後可通過如下語句查詢是否創建成功
Sql代碼
select * from dba_directories;
2.創建導出存儲過程
Sql代碼
create or replace procere loadProce(owner varchar2)is
type user_source_table_type is table of user_source.text%TYPE INDEX BY BINARY_INTEGER;user_source_table user_source_table_type;file_handle utl_file.file_type;
stor_text VARCHAR2(4000);
sql_stat varchar2(1000);
sql_stat2 varchar2(1000);
sql_stat3 varchar2(1000);
nCount NUMBER;
i NUMBER;
begin
sql_stat:='select distinct(name) from all_source where owner = ''' || upper(owner) || '''';execute immediate sql_stat bulk collect into user_source_table;file_handle:=utl_file.fopen('PROCE_DIR','test.sql','W');for j in 1..user_source_table.count loop
i:=1;
sql_stat2:='SELECT MAX(LINE) FROM ALL_SOURCE WHERE OWNER=''' || upper(owner) || ''' AND NAME=''' || user_source_table(j) || '''';--dbms_output.put_line(sql_stat2);
execute immediate sql_stat2 into nCount;
WHILE i<=nCount LOOP
sql_stat3:='SELECT TEXT FROM ALL_SOURCE WHERE OWNER=''' || upper(owner) || ''' AND NAME=''' || user_source_table(j) || ''' and line = ' || i;--dbms_output.put_line(sql_stat3);
execute immediate sql_stat3 into stor_text;i:=i+1;
utl_file.put(file_handle,stor_text);
END LOOP;
end loop;
utl_file.fclose(file_handle);
commit;
end loadProce;
3.調用,將TYPE BODY、PROCEDURE、TYPE、FUNCTION、TRIGGER、PACKAGE BODY、PACKAGE保存到桌面的test.sql中Sql代碼
begin
loadproce('bijian');
end;
2. 如何導出ORACLE指定存儲過程
1、要想連接到一個資料庫,先得配置一個tnsnames.ora文件。路徑位於 【XX】/NETWORK/ADMIN/tnsnames.ora。【XX】視具體情況而定。
截圖中紅框標記的地方需要改成你需要連接的資料庫的信息。
注意事項
若出現亂碼,可能需要將編寫的sql文件轉換為utf-8格式。
若提示無法創建spool文件,請確保目錄C:/EXP/DDL存在,或者指定新的路徑。
3. oracle如何導出存儲過程
可以使用expdp,不過很麻煩
主要是看你的需求,如果只是一兩個存儲過程,例:
select text from all_source where name = '『; --引號裡面填寫要查看的存儲過程名字。
4. 如何導出存儲過程
SQL存儲過程的導出導入 SqlServer存儲過程的導出導入
打開「企業管理器」,選擇需要導出存儲過程的資料庫,按右鍵,選擇「所有任務」,打開「生成SQL腳本」
打開「生成SQL腳本」窗口,點擊「全部顯示」按鈕
選擇「全部存儲過程」,其他的「設置格式」和「選項」標簽,可以看一下,默認可以不設置,最後點擊「確定」按鈕,選擇保存位置,輸入文件名,即可把當前資料庫的存儲過程全部導出成一個*.sql文件。如下圖
以上是存儲過程的導出過程,如果再導入到另一個資料庫呢?以下我們要用到「SQL查詢分析器」
先選擇需要導入存儲過程的資料庫,點擊「工具」菜單的「SQL查詢分析器」,
打開後,選擇「文件」菜單→「打開」,找到剛才生成的*.sql文件,打開後,選擇「查詢」菜單中的「分析」命令,如果顯示「命令全部成功完成」,
則繼續選擇「查詢」菜單中的「執行」命令。提示全部完成後,打開該資料庫的存儲過程即可看到剛才導出的存儲過程。
1. manger studio--右鍵你的資料庫--任務--生成腳本
在腳本生成向導的"選擇對象類型"步驟中, 將"存儲過程"選上, 在接下來的"選擇存儲過程"的步驟中, 選擇所有的存儲過程(或者你要復制的存儲過程)
完成後, 所有存儲過程的腳本會生成在一個新的查詢窗口中, 關掉生成腳本向導, 在生成的存儲過程腳本的窗口中, 右鍵--連接--更改連接, 連接到存儲過程復制的目的伺服器, 選擇合適的資料庫, 按F5執行即可完成存儲過程的復制.
2. 可以使用SSIS, 創建SSIS包, 就可以使用資料庫對象復制的這個組件來復制存儲過程(SSIS相當於2000的DTS)
5. 我想導出pg資料庫中的所有存儲過程,每個存儲過程一個文件,文件名就是存儲過程的名字。可以實現嗎感謝
需要存儲過程實現。
1、創建輸出路徑,比如你要在d盤test目錄下輸出,你就先在d盤根目錄下建立一個test的目錄。
2、sqlplus下以sysdba登錄,執行以下語句
12345createorreplacedirectoryTMPas'd: est';grantread,writeondirectoryTMPtoscott;--比如我用的scott用戶altersystemsetutl_file_dir='d: est'scope=spfile;
3、以上步驟執行完,需要重啟資料庫。
4、創建一個存儲過程,代碼如下(基本是不用改動,原封復制即可):
CREATEORREPLACEPROCEDURESP_OUTPUT_PROCEDUREisfile_handleutl_file.file_type;Write_contentVARCHAR2(1024);Write_file_nameVARCHAR2(50);v_namevarchar2(50);v_textvarchar2(2000);cursorcur_procere__sourcewheretype='PROCEDURE';cursorcur_sp_outisselectt.textfrom(select0line,'CREATEORREPLACE'textfromalunionselectline,textfromuser_sourcewheretype='PROCEDURE'andname=v_name)torderbyline;beginopencur_procere_name;loopfetchcur_procere_nameintov_name;exitwhencur_procere_name%notfound;write_file_name:=v_name||'.txt';opencur_sp_out;loopfetchcur_sp_outintov_text;exitwhencur_sp_out%notfound;file_handle:=utl_file.fopen('TMP',write_file_name,'a');write_content:=v_text;--writefileIFutl_file.is_open(file_handle)THENutl_file.put_line(file_handle,write_content);ENDIF;--closefileutl_file.fclose(file_handle);endloop;closecur_sp_out;endloop;closecur_procere_name;end;
5、創建完畢執行存儲過程,這個就不贅述了,執行完畢後,你會發現d盤test目錄下的文件名就是以存儲過程名命名的txt文件,如圖:
6. plsql怎麼把存儲過程導出來
1、PL/SQL---->TOOL----->Export user objects,然後選中要導出的存儲過程---》導出文件:p.sql
2、新建:登錄sqlplus,輸入:@D:/p.sql;
7. oracle資料庫怎麼導出存儲過程
Oracle怎麼導出存儲過程www.MyException.Cn網友分享於:2014-02-26瀏覽:115次Oracle如何導出存儲過程昨天使用exp可以導出oracle資料庫表,今天說下怎麼導出存儲過程。首先看下使用pl/sql怎麼導出存儲過程。導出步驟:tools-->ExportUs
8. oracle怎麼導出function和procere,即函數和存儲過程
使用oracle的一般都裝了PL/SQL吧,對象窗口,找到對應的函數或者存儲過程,右鍵查看或編輯。
一般單個我是這么用,如果很多的話可以參考一下網上提供的方法:
oracle 導出一個用戶下的所有存儲過程
方法一:
set echo off ;
set heading off ;
set feedback off ;
spool d:\tmp.txt
select text from user_source ;
spool off;
方法二:
使用PL/SQL 菜單 Tools --> Export user objects... ,對彈出的dialog中選擇user和output file,選中要導出的內容,點擊export導出就行了
9. 如何備份SQL存儲過程批量導出資料庫存儲過程
打開SQL Server Management Studio查詢分析器,找到需要批量導出SQL存儲過程資料庫。右鍵菜單-任務-生成腳本。
進入的生成SQL Server腳本向導。點擊下一步。
選中要導出所有SQL存儲過程的資料庫。繼續下一步。
腳本選項,不用做修改,默認即可。
在選擇對象類型中,選擇存儲過程。
這樣可以看到這個資料庫中所有的SQL存儲過程,可以批量選擇SQL存儲過程,也可以全選所有的SQL存儲過程進行導出。
在腳本模式中,腳本保存到文件,選擇需要導出保存到電腦上的文件夾路徑。單個文件即所有SQL存儲過程都放在一個SQL文件中,不是每個SQL存儲過程獨立一個SQL文件。所以可以選擇每個對象一個文件。
設置向導完成,等待導出完成即可。