Chinaunix首页 | 论坛 | 博客
  • 博客访问: 547405
  • 博文数量: 855
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-16 19:08
文章分类

全部博文(855)

文章存档

2011年(1)

2008年(854)

我的朋友

分类:

2008-10-16 19:09:56

    Sql*plus中蕴藏着好多技巧,如果掌握这些技巧,对于在oracle数据库下进行快速开发与有效维护数据库都是有益的。下面就介绍一二:

  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

  在上面的操作中,在生成的脚本文件中会有多余的字符,如运行的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

 

[1]    

【责编:Peng】

--------------------next---------------------
SQLPLUS > @ …..gen_dorp_table.sql

--------------------next---------------------
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

--------------------next---------------------
SQLPLUS > @ c:dorp_table.sql

--------------------next---------------------
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

--------------------next---------------------
SQLPLUS > @ …..gen_dorp_table.sql

--------------------next---------------------

阅读(238) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~