無法直接保存到excel中,但是可以保存到csv文件,同樣是excel的格式,方法如下:
十多年的嵩明網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷推廣的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整嵩明建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯公司從事“嵩明網站設計”,“嵩明網站推廣”以來,每個客戶項目都認真落實執行。
譬如要把文件生成在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文件中,會把這些字符串合在一個單元格中。
Oracle數據庫RMAN的自動備份腳本簡介
各位同學知道Oracle數據庫RMAN如何自動備份腳本嘛?下面我為大家整理了關于Oracle數據庫RMAN的自動備份腳本文章,希望能為你提供幫助:
1、數據庫設置為歸檔方式
2、數據庫的備份腳本
db_full_backup.sh :數據庫全備腳本
db_l0_backup.sh :數據庫0級備份腳本
db_l1_backup.sh :數據庫1級備份腳本
:數據FTP上傳腳本
ftp_del.sh :數據FTP清理腳本
rman_bak.sh :數據備份主程序
3、備份原理
每周1、3、6進行0級備份
每周日、2、4、5進行1級備份
備份文件上傳到FTP服務器
FTP服務器每周清理一次,但是清理后將周六和周日的備份進行保留(6.bak和0.bak)
所有工作防暑crontab中自動執行備份
4、備份目錄含義
arc :數據庫歸檔目錄
rmanbak :數據庫備份文件的保存目錄
rmanscripts :數據庫腳本存放路徑
5、FTP目錄
ftp上必須手動建立目錄
L0:
---1
---3
---6
---6.bak
L1:
---2
---4
---5
---0
---0.bak
rman_bak.sh腳本主程序
#!/bin/bash
#--------------------------------------------
# Oracle auto backup using rman
#
# author:songrh
# week:1,3,6 Level 0 backup
# 2,4,5,0 Level 1 backup
# Copyright by ChenLong Tec
#--------------------------------------------
#
#
export ORACLE_BASE=/u02/oracle
export ORACLE_HOME=/u02/oracle/product/9.2.4
export ORACLE_SID=PROD
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
export NLS_LANG=american_america.ZHS16GBK
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NL33=$ORACLE_HOME/ocommon/nls/admin/data
export PATH=/bin:/usr/bin:/usr/sbin:$ORACLE_HOME/bin:$PATH
export PATH=$PATH:/opt/local/bin
#
SH_PATH=/u02/rmanscripts
ARC_PATH=/u02/arch
RMAN_BAK_PATH=/u02/rmanbak
#
#FULL_PATH=$RMAN_BAK_PATH/full
L0_PATH=$RMAN_BAK_PATH/L0
L1_PATH=$RMAN_BAK_PATH/L1
#
#DAY_TAG=`date "%Y-%m-%d"`
LOG_TAG=`date "%Y-%m-%d"`
#FIRST_DAY=`date %e`
WEEK=`date %w`
#WEEK=1
#
# FTP configure
IP="122.120.150.155"
FTPUSER="ftpbak"
FTPPASS="******"
FTPROOT0="L0"
FTPROOT1="L1"
#
DISK_USE=`df -k |sed -n '/u02/'p | awk '{print $5}' |sed 's/%//'`
####check path function
############
if [[ $DISK_USE -ge 90 ]]; then
rm -rf $L0_PATH/*
rm -rf $L1_PATH/*
fi
if [ "$WEEK" = "6" -o "$WEEK" = "3" -o "$WEEK" = "1" ]; then
if [ ! -d $L0_PATH ]; then
mkdir $L0_PATH
fi
if [ "$WEEK" = "1" ]; then
rm -rf $L0_PATH/*
rm -rf $L1_PATH/*
mkdir $L0_PATH/$WEEK
$SH_PATH/db_l0_backup.sh $L0_PATH/$WEEK
cd $L0_PATH/$WEEK
$SH_PATH/ftp_del.sh $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log
else
if [ ! -d $L0_PATH/$WEEK ]; then
mkdir $L0_PATH/$WEEK
$SH_PATH/db_l0_backup.sh $L0_PATH/$WEEK
cd $L0_PATH/$WEEK
$SH_PATH/ $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log
else
;
set feedback off heading off term off\x0d\x0aset pages 0 trim on trims on lines 32767 long 999999\x0d\x0aset echo off\x0d\x0aspool result.sql\x0d\x0aSelect 'alter table '||table_name||allocate extent;from user_tables where num_rows=0; \x0d\x0aspool off\x0d\x0a把以上部分放入一個腳本文件中再執行,會在當前目錄下生成你要的文件result.sql
建立一個txt文件,然后在里面寫入你的查詢語句,然后保存,將txt文件更改為sql后綴名的文件。
然后進入到oracle中,輸入@+文件的詳細路徑就ok了
如:
路徑:c:\
文件:abc.txt
然后在abc.txt中寫 select table_name from user_tables;
然后將abc.txt更改為abc.sql
然后進入數據庫
sqlplus / as sysdba
@c:\abc
回車執行,這里不用寫后綴名就OK。
這還不明白的話就沒得可講了...
set feedback off heading off term off
set pages 0 trim on trims on lines 32767 long 999999
set echo off
spool result.sql
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
spool off
把以上部分放入一個腳本文件中再執行,會在當前目錄下生成你要的文件result.sql
第一步:創建腳本文件。
在Oracle數據庫重,創建腳本文件的方式很多。如可以直接在記事本中創建腳本文件,也可以通過SQL*Plus工具直接創建。不過,筆者的意見是,在SQL*Plus中直接創建腳本文件的話,比較麻煩。這主要是因為在SQL*Plus工具中,命令編輯能力非常有效。如不能夠使用鍵盤上的箭頭鍵定位輸入的位置,不能夠使用DEL鍵刪除輸入的內容等等。而且閱讀起來也比較困難。
第二步:編輯腳本文件。
在我們使用腳本文件的時候,往往需要根據實際情況,對其進行稍微的調整。對腳本文件進行編輯,也有兩種方式。一是通過SQL*Plus工具,二是第三方獨立的腳本編輯軟件。
對于一些調整不大的腳本文件,我們可以直接利用SQL*Plus工具打開,然后進行編輯。但是,對于需要進行大量修改的腳本文件,則筆者建議數據庫管理員采用第三方獨立的腳本編輯軟件。原因很簡單,就如同上面所說的那樣,SQL*Plus工具腳本命令編輯功能非常的薄弱。若采用這個工具對現成的腳本語句進行編輯的話,則可能工作量還是重新編寫一個來的輕。所以,數據庫管理員要根據實際的情況,選擇合適的腳本編輯工具。
另外,在編輯的過程中,要注意語法的正確性。特別是要注意,不能夠改變其固有的格式。如不要不小心刪除了最后的“/”符號結束。
第三步:運行腳本文件。
腳本建立好之后,如何運行腳本呢?在Oracle系統中也提供了許多方式。數據庫管理員可以根據自己的使用習慣來進行選擇。
一是通過Start語句來調用腳本文件。其語法是Start Filemame[相關參數]。在運行這個命令的時候,需要注意幾個問題。
1、腳本文件的擴展名問題。上面在建立腳本文件的時候,筆者就跳掉過,為了在SQL*Plus等工具中可以直接調用這個腳本文件,最好能夠把擴展名改為Oracle數據庫能夠接受的擴展名。默認情況下,擴展名設置為SQL即可。
2、腳本文件的路徑問題。若用戶在利用Start調用腳本文件的時候,若沒有清楚的指名保存路徑的話,則SQL*Plus工具會現在當前的目錄中進行查找;若沒有的話,則會根據環境變量中確定的目錄中進行查找。而一般情況下,我們把腳本文件都會獨立存放。所以,在使用Start命令執行腳本文件的時候,最好能夠注明腳本文件的絕對路徑名。防止語句執行錯誤。
另外@命令也可以起到跟Start命令一樣的作用。只不過,前者的使用范圍更廣一點。@命令可以脫離SQL*PLUS工具而使用。如可以直接在微軟操作系統中的命令行方式下使用。當然,這操作系統要事先部署了Oracle數據庫環境。
二是可以直接利用SQL*Plus工具打開文本文件,執行腳本語句。然后點擊“文件”、“執行”命令執行這個腳本語句。這種方式的好處就是,系統會主動提示用戶需要輸入的參數。
總之,腳本文件是我們管理Oracle數據庫的一大利器。我們好好利用腳本文件,可以提高Oracle數據庫的管理效率。畢竟,每次在需要的時候,都去編寫命令是一件很麻煩的事情。而腳本文件的最大好處,就是可以提高語句的重復利用,節省我們編寫語句、調試測試的時間。
當前名稱:oracle腳本怎么保存,oracle 導入腳本
本文網址:http://m.kartarina.com/article0/heiiio.html
成都網站建設公司_創新互聯,為您提供網站內鏈、搜索引擎優化、商城網站、域名注冊、小程序開發、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯