1.使用SQL*PLUS动态生成批量脚本
将spool与select命令结合起来使用,可以生成一个脚本,脚本中包含有可以批量执行某一任务的语句。 例1: 生成一个脚本,删除SCOTT用户下的所有的表: a. 创建gen_drop_table.sql文件,包含如下语句: SPOOL c:\drop_table.sql SELECT 'DROP TABLE ' table_name ';' FROM user_tables; SPOOL OFF b. 以SCOTT用户登录数据库 SQLPLUS > @ …..\gen_dorp_table.sql c. 在c盘根目录下会生成文件drop_table.sql文件,包含删除所有表的语句,如下所示: SQL> SELECT 'DROP TABLE ' table_name ';' FROM user_tables;
'DROPTABLE'TABLE_NAME';' ------------------------------------ DROP TABLE DEPT; DROP TABLE EMP; DROP TABLE PARENT; DROP TABLE STAT_VENDER_TEMP; DROP TABLE TABLE_FORUM;
5 rows selected.
SQL> SPOOL OFF d. 对生成的drop_table.sql文件进行编辑去掉不必要的部分,只留下drop table …..语句 e. 在scott用户下运行dorp_table.sql文件,删除scott用户下所有的表。 SQLPLUS > @ c:\dorp_table.sql
a. 创建gen_drop_table.sql文件,包含如下语句: set echo off set feedback off set newpage none set pagesize 5000 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 verify off set numwidth 38 SPOOL c:\drop_table.sql SELECT 'DROP TABLE ' table_name ';' FROM user_tables; SPOOL OFF b. 以SCOTT用户登录数据库 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用户下运行dorp_table.sql文件,删除scott用户下所有的表。 SQLPLUS > @ c:\dorp_table.sql
2.将一个表中的数据导出生成一个文本文件,列与列之间以”,”隔开 set echo off set feedback off set newpage none set pagesize 5000 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 verify off set numwidth 38 SPOOL c:\drop_table.sql select DEPTNO ',' DNAME FROM DEPT; SPOOL OFF 将上面的内容保存为一个文本文件后,以scott登录,执行该文件后显示结果: 10,ACCOUNTING 20,RESEARCH 30,SALES 40,OPERATIONS
通过上面的两个例子,我们可以将: set echo off set feedback off set newpage none set pagesize 5000 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 verify off set numwidth 38 SPOOL c:\具体的文件名 你要运行的sql语句 SPOOL OFF 作为一个模版,只要将必要的语句假如这个模版就可以了。