oracle spool .dbf,oracle技术之oracle spool的简单使用
spool是oracle sqlplus提供的一個(gè)控制命令。可以利用spool和select語句的組合動態(tài)的生成一些sql腳本或者一些數(shù)據(jù)。
sqlplus中可以執(zhí)行的語句分類大概有兩種,一種是最常見的dml,dcl,ddl。這些語句在執(zhí)行以后會存放在一個(gè)sqlplus的buffer中,而且每次只會存放最近執(zhí)行的一條語句,以方便再次執(zhí)行。另外的一種就是稱為“命令語句”了,諸如set linesize之類的,這些語句往往是處理終端顯示格式的一些命令,調(diào)用后語句不會存放入sqlplus buffer中。
spool語句就是命令語句的其中之一。在調(diào)用spool語句后,其后的select語句所產(chǎn)生的所有終端顯示,包括select語句本身和一些行數(shù)信息都會寫入spool語句定義的文件中。在語句執(zhí)行完后,一定要調(diào)用spool off命令,不然輸出的信息只是在數(shù)據(jù)緩存中,不會寫入文件。
下面舉兩個(gè)利用spool可以完成的功能:
1、利用spool動態(tài)生成刪除某用戶模式下面所有表的sql腳本:
a. 創(chuàng)建gen_drop_table.sql文件,包含如下語句:
set echo off
set feedback off
set newpage none
set linesize 500
set verify off
set pagesize 0
set term off
set trims on
set linesize 600
set heading off
set timing off
set numwidth 38
SPOOL c:\drop_table.sql
SELECT 'DROP TABLE '|| table_name ||';' ?FROM user_tables;
SPOOL OFF
b. 以SCOTT用戶登錄數(shù)據(jù)庫
SQLPLUS > @ …..\gen_dorp_table.sql
c. 在c盤根目錄下會生成文件drop_table.sql文件,包含刪除所有表的語句,如下所示:
DROP TABLE DEPT;
DROP TABLE EMP;
DROP TABLE PARENT;
DROP TABLE STAT_VENDER_TEMP;
DROP TABLE TABLE_FORUM;
d. 在scott用戶下運(yùn)行dorp_table.sql文件,刪除scott用戶下所有的表。
SQLPLUS > @ c:\dorp_table.sql
為了防止spool打出的文件中包含sql語句和行數(shù)這些不便的信息,可以通過set來關(guān)閉這些信息在終端上的顯示,然后再執(zhí)行spool。
2、利用spool將select語句選出的紀(jì)錄數(shù)據(jù)存放入指定的文件(unix下,寫成shell腳本):
sqlplus 登陸名/密碼@數(shù)據(jù)庫名<
set pagesize 0
set linesize 160
col emp_no format a24
col emp_name format a30
spool record.txt
select '"'||emp_name||'"',emp_no from employee where emp_name like '%huanghe%';
spool off
END
3、利用spool定期處理select紀(jì)錄,根據(jù)日期動態(tài)生成文件名:
column dat1 new_value filename;
select to_char(sysdate,'yyyymmddhh24mi') dat1 from dual;
spool c:\&&filename..txt
select * from employee;
spool off;
4、如何在spool中調(diào)用windows和unix的環(huán)境變量:
在windos中:
spool c:\temp\%ORACLE_SID%.txt
select * from dept;
...
spool off
在UNIX中:
spool c:\temp\$ORACLE_SID.txt
select * from dept;
...
spool off
總結(jié)
以上是生活随笔為你收集整理的oracle spool .dbf,oracle技术之oracle spool的简单使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle排序非英文最后,Oracle
- 下一篇: linux路由修改密码,Linux中修改