服务器 频道

sql*plus使用的一些技巧

  【IT168 服务器学院】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

  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

0
相关文章