无法直接保存到excel中,但是可以保存到csv文件,同样是excel的格式,方法如下:
譬如要把文件生成在d盘下的test目录下:
①.,在d盘根目录下新建test目录
然后建立存储过程,表是随便建了一个,最后的文件名按要求需要按照当前日期的前一天生成,所以后边文件名的地方write_file_name处就按照要求来了
create or replace PROCEDURE SP_OUTPUT
(
on_flag OUT NUMBER,
is
v_code number;
file_handle utl_file.file_type;
cursor cur_sp_out
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;
end IF;
end;
rollback;
这样基本就完成了,但是建立完毕后需要重启数据库,否则文件写不进指定的目录下
需要注意的是: write_content := v_aaa||' '||v_bbb; 这个位置
v_aaa|| 和v_bbb中间引号的地方是TAB符,否则输出来的XLS文件中,会把这些字符串合在一个单元格中.
Oracle数据库RMAN的自动备份脚本简介
各位同学知道Oracle数据库RMAN如何自动备份脚本嘛?下面我为大家整理了关于Oracle数据库RMAN的自动备份脚本文章,希望能为你提供帮助:
①.、数据库设置为归档方式
db_full_backup.sh :数据库全备脚本
db_l0_backup.sh :数据库0级备份脚本
db_l1_backup.sh :数据库1级备份脚本
:数据FTP上传脚本
ftp_del.sh :数据FTP清理脚本
rman_bak.sh :数据备份主程序
备份文件上传到FTP服务器
所有工作防暑crontab中自动执行备份
arc :数据库归档目录
rmanbak :数据库备份文件的保存目录
rmanscripts :数据库脚本存放路径
ftp上必须手动建立目录
L0:
---1
L1:
---0
---0.bak
rman_bak.sh脚本主程序
#!/bin/bash
#--------------------------------------------
# Oracle auto backup using rman
#
# author:songrh
# Copyright by ChenLong Tec
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 TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/bin:/usr/bin:/usr/sbin:$ORACLE_HOME/bin:$PATH
export PATH=$PATH:/opt/local/bin
#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
FTPUSER="ftpbak"
FTPPASS="******"
FTPROOT0="L0"
FTPROOT1="L1"
####check path function
############
rm -rf $L0_PATH/*
rm -rf $L1_PATH/*
fi
if [ ! -d $L0_PATH ]; then
mkdir $L0_PATH
if [ "$WEEK" = "1" ]; then
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
$SH_PATH/ $IP $FTPUSER $FTPPASS $FTPROOT0 $WEEK $WEEK_$LOG_TAG.log
;
建立一个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 echo off
spool result.sql
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
spool off
把以上部分放入一个脚本文件中再执行,会在当前目录下生成你要的文件result.sql
第一步:创建脚本文件.
第三步:运行脚本文件.
脚本建立好之后,如何运行脚本呢?在Oracle系统中也提供了许多方式.数据库管理员可以根据自己的使用习惯来进行选择.
一是通过Start语句来调用脚本文件.其语法是Start Filemame[相关参数].在运行这个命令的时候,需要注意几个问题.
①.、脚本文件的扩展名问题.上面在建立脚本文件的时候,笔者就跳掉过,为了在SQL*Plus等工具中可以直接调用这个脚本文件,最好能够把扩展名改为Oracle数据库能够接受的扩展名.默认情况下,扩展名设置为SQL即可.
都说到这里了大家应该明白,脚本文件是我们管理Oracle数据库的一大利器.我们好好利用脚本文件,可以提高Oracle数据库的管理效率.毕竟,每次在需要的时候,都去编写命令是一件很麻烦的事情.而脚本文件的最大好处,就是可以提高语句的重复利用,节省我们编写语句、调试测试的时间.