無法直接保存到excel中,但是可以保存到csv文件,同樣是excel的格式,方法如下:
成都創新互聯公司2013年開創至今,先為大興安嶺等服務建站,大興安嶺等地企業,進行企業商務咨詢服務。為大興安嶺企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
譬如要把文件生成在d盤下的test目錄下:
1,在d盤根目錄下新建test目錄
2,sqlplus以system用sysdba登錄
3,create or replace directory TMP as ’d:\test’;
4,grant read on directory TMP to user;
5,alter system set utl_file_dir='d:\test' scope=spfile;
然后建立存儲過程,表是隨便建了一個,最后的文件名按要求需要按照當前日期的前一天生成,所以后邊文件名的地方write_file_name處就按照要求來了
create or replace PROCEDURE SP_OUTPUT
(
on_flag OUT NUMBER,
out_reason OUT VARCHAR2)
is
v_code number;
v_text varchar2(255);
file_handle utl_file.file_type;
Write_content VARCHAR2(1024);
Write_file_name VARCHAR2(50);
v_aaa varchar2(5);
v_bbb varchar2(5);
cursor cur_sp_out
is
select aaa,bbb
from aaa;
begin
open cur_sp_out;
loop
fetch cur_sp_out into v_aaa,v_bbb;
exit when cur_sp_out%notfound;
write_file_name := to_char(SYSDATE,'YYYYMMDD')||'.xls';
file_handle := utl_file.fopen('TMP',write_file_name,'a');
write_content := v_aaa||' '||v_bbb;
--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;
v_code := 0;
v_text := '完成';
exception
when others then
on_flag := SQLCODE;
out_reason := SQLERRM;
begin
IF utl_file.is_open(file_handle) THEN
utl_file.fclose(file_handle);
end IF;
end;
rollback;
end;
這樣基本就完成了,但是建立完畢后需要重啟數據庫,否則文件寫不進指定的目錄下
需要注意的是: write_content := v_aaa||' '||v_bbb; 這個位置
v_aaa|| 和v_bbb中間引號的地方是TAB符,否則輸出來的XLS文件中,會把這些字符串合在一個單元格中。
1、要想連接到一個數據庫,先得配置一個tnsnames.ora文件。路徑位于 【XX】/NETWORK/ADMIN/tnsnames.ora?!綳X】視具體情況而定。
截圖中紅框標記的地方需要改成你需要連接的數據庫的信息。
2、測試數據庫是否能連通。
運行CMD,命令行執行:sqlplus 用戶名/密碼@數據庫。
3、編寫導出存儲過程的腳本,保存為E:\export.sql。大概如下(標紅框的地方替換成要保存腳本的路徑和需要導出的存儲過程列表):
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、執行剛剛編寫的腳本文件,導出指定的存儲過程。
連接數據庫后,輸入:@E:\export.sql
如果遇到了截圖中出現的問題,請參照文章結尾的【注意事項】。
5、若要在新的數據庫上創建導出的存儲過程,只需連上新的數據,然后執行剛生成的腳本文件即可。
連接數據庫后輸入:@C:\exp\ddl\PRC_JG_JGTZ.SQL
注意事項
若出現亂碼,可能需要將編寫的sql文件轉換為utf-8格式。
若提示無法創建spool文件,請確保目錄C:/EXP/DDL存在,或者指定新的路徑。
1、首先在SQL Window窗口中,查詢需要導出的數據。
2、在查詢的結果集上(注意不要選中任何一個行或者單元格)右鍵--【Copy to Excel】--【Copy as xls/xlsx】導出到97-2003格式的.xls或者2007之后的xlsx文件.
3、如果不想導出查詢的全部數據,可以在左側選中需要導出的行,然后步奏同上。
4、點擊導出后,系統自動打開導出的excel文件內容,這里面包括數據以及查詢這些數據的sql腳本。
5、點擊“SQL Statement”可以查看數據庫腳本。
6、下面就是操作excel文件了。點擊【文件】--【另存為】保存excel文件
7、選擇保存路徑,輸入文件名稱。
在PL/SQL客戶端里查詢出你要導出的數據,選中過后右擊,導出結果 -- SQL file
新聞標題:oracle如何導出腳本,腳本導出oracle數據庫數據
文章起源:http://vcdvsql.cn/article12/hsdsgc.html
成都網站建設公司_創新互聯,為您提供網站策劃、微信小程序、品牌網站制作、網站設計、手機網站建設、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯