就业数据资源平台
当前位置:首页 > 数据库技术
sql*plus使用的一些技巧

 sql*plus使用的一些技巧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.sqlc. 在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 offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesize 600set heading off set timing offset verify offset numwidth 38SPOOL c:\drop_table.sql SELECT ’DROP TABLE ’|| table_name ||’;’ FROM user_tables; SPOOL OFF b. 以SCOTT用户登录数据库SQLPLUS > @ …..\gen_dorp_table.sqlc. 在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.sql2.将一个表中的数据导出生成一个文本文件,列与列之间以”,”隔开set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesize 600set heading off set timing offset verify offset numwidth 38SPOOL c:\drop_table.sql select DEPTNO || ’,’ || DNAME FROM DEPT; SPOOL OFF 将上面的内容保存为一个文本文件后,以scott登录,执行该文件后显示结果:10,ACCOUNTING 20,RESEARCH 30,SALES 40,OPERATIONS 通过上面的两个例子,我们可以将:set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesize 600set heading off set timing offset verify offset numwidth 38SPOOL c:\具体的文件名 你要运行的sql语句 SPOOL OFF作为一个模版,只要将必要的语句假如这个模版就可以了。在oracle的较新版本中,还可以用set colsep命令来实现上面的功能:SQL> set colsep ,SQL> select * from dept;
  10,ACCOUNTING ,NEW YORK
  20,RESEARCH ,DALLAS
  30,SALES
  ,CHICAGO
  40,OPERATIONS ,BOSTON
  35,aa
就业数据资源平台