1、要想連接到一個(gè)數(shù)據(jù)庫,先得配置一個(gè)tnsnames.ora文件。路徑位于 【XX】/NETWORK/ADMIN/tnsnames.ora?!綳X】視具體情況而定。
創(chuàng)新互聯(lián)建站是一家專注于做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),撫松網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:撫松等地區(qū)。撫松做網(wǎng)站價(jià)格咨詢:028-86922220
截圖中紅框標(biāo)記的地方需要改成你需要連接的數(shù)據(jù)庫的信息。
2、測(cè)試數(shù)據(jù)庫是否能連通。
運(yùn)行CMD,命令行執(zhí)行:sqlplus 用戶名/密碼@數(shù)據(jù)庫。
3、編寫導(dǎo)出存儲(chǔ)過程的腳本,保存為E:\export.sql。大概如下(標(biāo)紅框的地方替換成要保存腳本的路徑和需要導(dǎo)出的存儲(chǔ)過程列表):
SET echo off ;
SET heading ? off ;
SET feedback ? off ;
SPOOL 'C:/EXP/DDL/PRC_JG_JGTZ.SQL' replace
SELECT CASE
? ?WHEN LINE = 1 THEN
? ? 'CREATE OR REPLACE ' || TEXT
? ?WHEN LINE = MAX_LINE THEN
? ? TEXT || CHR(10 ) || '/'
? ?ELSE
? ? TEXT
?END
FROM USER_SOURCE A
LEFT JOIN (SELECT A.NAME,A.TYPE, MAX(LINE) MAX_LINE
? ? ? ? ?FROM USER_SOURCE A
? ? ? ? WHERE TYPE in ( 'PROCEDURE', 'PACKAGE' ,'PACKAGE BODY' )
? ? ? ? GROUP BY A.NAME,A.TYPE ) B ON A.NAME||A.TYPE = B.NAME||B.TYPE
WHERE A.TYPE in ('PROCEDURE' , 'PACKAGE', 'PACKAGE BODY' ) AND A.NAME IN
(
'ETL_FACT_JG_SAEINDEX_SCALE'
,'ETL_FACT_JG_SAEINDEX_SCALE_OLD'
,'ETL_DM_JG_CIRC'
)
ORDER BY a.NAME||a.TYPE , LINE;
SPOOL OFF
4、執(zhí)行剛剛編寫的腳本文件,導(dǎo)出指定的存儲(chǔ)過程。
連接數(shù)據(jù)庫后,輸入:@E:\export.sql
如果遇到了截圖中出現(xiàn)的問題,請(qǐng)參照文章結(jié)尾的【注意事項(xiàng)】。
5、若要在新的數(shù)據(jù)庫上創(chuàng)建導(dǎo)出的存儲(chǔ)過程,只需連上新的數(shù)據(jù),然后執(zhí)行剛生成的腳本文件即可。
連接數(shù)據(jù)庫后輸入:@C:\exp\ddl\PRC_JG_JGTZ.SQL
注意事項(xiàng)
若出現(xiàn)亂碼,可能需要將編寫的sql文件轉(zhuǎn)換為utf-8格式。
若提示無法創(chuàng)建spool文件,請(qǐng)確保目錄C:/EXP/DDL存在,或者指定新的路徑。
略微復(fù)雜,需要存儲(chǔ)過程實(shí)現(xiàn)。
1、創(chuàng)建輸出路徑,比如你要在d盤test目錄下輸出,你就先在d盤根目錄下建立一個(gè)test的目錄。
2、sqlplus下以sysdba登錄,執(zhí)行以下語句
create?or?replace?directory?TMP?as?'d:\test';
grant?read,write?on?directory?TMP?to?scott;?--比如我用的scott用戶
alter?system?set?utl_file_dir='d:\test'?scope=spfile;
3、以上步驟執(zhí)行完,需要重啟數(shù)據(jù)庫。
4、創(chuàng)建一個(gè)存儲(chǔ)過程,代碼如下(基本是不用改動(dòng),原封復(fù)制即可):
CREATE?OR?REPLACE?PROCEDURE?SP_OUTPUT_PROCEDURE?is
file_handle?????utl_file.file_type;
Write_content???VARCHAR2(1024);
Write_file_name?VARCHAR2(50);
v_name??????????varchar2(50);
v_text??????????varchar2(2000);
cursor?cur_procedure_name?is
select?distinct?name?from?user_source?where?type?=?'PROCEDURE';
cursor?cur_sp_out?is
select?t.text
from?(select?0?line,?'CREATE?OR?REPLACE?'?text
from?dual
union
select?line,?text
from?user_source
where?type?=?'PROCEDURE'
and?name?=?v_name)?t
order?by?line;
begin
open?cur_procedure_name;
loop
fetch?cur_procedure_name
into?v_name;
exit?when?cur_procedure_name%notfound;
write_file_name?:=?v_name?||?'.txt';
open?cur_sp_out;
loop
fetch?cur_sp_out
into?v_text;
exit?when?cur_sp_out%notfound;
file_handle???:=?utl_file.fopen('TMP',?write_file_name,?'a');
write_content?:=?v_text;
--write?file
IF?utl_file.is_open(file_handle)?THEN
utl_file.put_line(file_handle,?write_content);
END?IF;
--close?file
utl_file.fclose(file_handle);
end?loop;
close?cur_sp_out;
end?loop;
close?cur_procedure_name;
end;
5、創(chuàng)建完畢執(zhí)行存儲(chǔ)過程,這個(gè)就不贅述了,執(zhí)行完畢后,你會(huì)發(fā)現(xiàn)d盤test目錄下的文件名就是以存儲(chǔ)過程名命名的txt文件,如圖:
6、里邊內(nèi)容(就是存儲(chǔ)過程創(chuàng)建時(shí)的代碼,可能排版看著難看點(diǎn),但是不影響使用):
我給你一些數(shù)據(jù)庫常用的導(dǎo)入導(dǎo)出命令吧:\x0d\x0a該命令在“開始菜單運(yùn)行CMD”中執(zhí)行\(zhòng)x0d\x0a一、數(shù)據(jù)導(dǎo)出(exp.exe)\x0d\x0a1、將數(shù)據(jù)庫orcl完全導(dǎo)出,用戶名system,密碼accp,導(dǎo)出到d:\daochu.dmp文件中\(zhòng)x0d\x0aexp system/accp@orcl file=d:\daochu.dmp full=y\x0d\x0a\x0d\x0a2、將數(shù)據(jù)庫orcl中scott用戶的對(duì)象導(dǎo)出\x0d\x0aexp scott/accp@orcl file=d:\daochu.dmp owner=(scott)\x0d\x0a\x0d\x0a3、將數(shù)據(jù)庫orcl中的scott用戶的表emp、dept導(dǎo)出\x0d\x0aexp scott/accp@orcl file= d:\daochu.dmp tables=(emp,dept)\x0d\x0a\x0d\x0a4、將數(shù)據(jù)庫orcl中的表空間testSpace導(dǎo)出\x0d\x0aexp system/accp@orcl file=d:\daochu.dmp tablespaces=(testSpace)\x0d\x0a\x0d\x0a二、數(shù)據(jù)導(dǎo)入(imp.exe)\x0d\x0a1、將d:\daochu.dmp 中的數(shù)據(jù)導(dǎo)入 orcl數(shù)據(jù)庫中。\x0d\x0aimp system/accp@orcl file=d:\daochu.dmp full=y\x0d\x0a\x0d\x0a2、如果導(dǎo)入時(shí),數(shù)據(jù)表已經(jīng)存在,將報(bào)錯(cuò),對(duì)該表不會(huì)進(jìn)行導(dǎo)入;加上ignore=y即可,表示忽略現(xiàn)有表,在現(xiàn)有表上追加記錄。\x0d\x0aimp scott/accp@orcl file=d:\daochu.dmp full=y ignore=y\x0d\x0a\x0d\x0a3、將d:\daochu.dmp中的表emp導(dǎo)入\x0d\x0aimp scott/accp@orcl file=d:\daochu.dmp tables=(emp)
本文題目:oracle如何導(dǎo)存儲(chǔ),oracle 存儲(chǔ)過程導(dǎo)出excel文件
當(dāng)前鏈接:http://muchs.cn/article26/hcgccg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、品牌網(wǎng)站制作、外貿(mào)建站、網(wǎng)站收錄、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)