关闭

从多个方面详细讲解SQLPlus的使用技巧

发表于:2008-3-04 16:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  本文从多个方面讲述了SQLPlus技巧。


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_t:


able.sql文件,删除scott用户下所有的表。SQLPLUS > @ c:\dorp_table.sql

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号