加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

sql*plus行使的一些能力

发布时间:2018-08-29 04:19:52 所属栏目:电商 来源:站长网
导读:sql*plus行使的一些能力Sql*plus中储藏着许多几何能力,假如把握这些能力,对付在oracle数据库下举办快速开拓与有用维护数据库都是有益的。 下面就接管一二, 1.行使SQL*PLUS动态天生批量剧本将spool与select呼吁团结起来行使,可以天生一个剧本,剧本中包括

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            ,bb3.动态天生spool呼吁所需的文件名在我们上面的例子中,spool呼吁所必要的文件名都是牢靠的。偶然我们必要天天spool一次,而且每次spool的文件名都不沟通,如文件名包括当天的日期,该怎样实现呢?column dat1 new_value filename;select to_char(sysdate,'yyyymmddhh24mi') dat1 from dual;  spool c:&&filename..txt  select * from dept;spool off;4.怎样从剧本文件中获得WINDOWS情形变量的值:在windos中:spool c:temp%ORACLE_SID%.txt   select * from dept;   ...   spool off在上面的例子中,通过%ORACLE_SID%的方法引用情形变量ORACLE_SID的值,假如ORACLE_SID的值为orcl,则天生的spool文件名为:orcl.txt在UNIX中:spool c:temp$ORACLE_SID.txt   select * from dept;   ...   spool off在上面的例子中,通过$ORACLE_SID的方法引用情形变量ORACLE_SID的值,假如ORACLE_SID的值为orcl,则天生的spool文件名为:orcl.txt5.怎样指定缺省的编辑剧本的目次        在sql*plus中,可以用save呼吁,将上一条执行的sql语句生涯到一个文件中,可是怎样配置该文件的缺省目次呢?通过SQL> set editfile c:tempfile.sql 呼吁,可以配置其缺省目次为c:tmpe,缺省文件名为file.sql。6.怎样撤除表中沟通的行找到沟通的行:SELECT * FROM dept a   WHERE ROWID <> (SELECT MAX(ROWID)                   FROM dept b                   WHERE a.deptno = b.deptno                   AND a.dname = b.dname  -- Make sure all columns are compared                   AND a.loc = b.loc);注释:假如只找deptno列沟通的行,上面的查询可以改为:SELECT * FROM dept a   WHERE ROWID <> (SELECT MAX(ROWID)                   FROM dept b                   WHERE a.deptno = b.deptno)删除沟通的行:DELETE FROM dept aWHERE ROWID <> (SELECT MAX(ROWID                                FROM dept b                                WHERE a.deptno = b.deptno                                AND a.dname = b.dname -- Make sure all columns are compared                                AND a.loc = b.loc);留意:上面并不删除列值为null的行。7.怎样向数据库中插入两个单引号(’’)Insert inot dept values(35,’aa’’’’bb’,’a’’b’);在插入时,用两个’暗示一个’。8.怎样配置sql*plus的征采路径,这样在用@呼吁时,就不消输入文件的全路径。配置SQLPATH情形变量。如:SQLPATH = C:ORANTDBS;C:APPS CRIPTS;C:MYSCRIPTS9.@与@@的区别是什么?@便是start呼吁,用来运行一个sql剧本文件。@呼吁挪用当前目次下的,或指定全路径,或可以通过SQLPATH情形变量征采到的剧本文件。@@用在剧本文件中,用来指定用@@执行的文件与@@地址的文件在统一目次,而不消指定全路径,也不从SQLPATH情形变量指定的路径中探求文件,该呼吁一样平常用在嵌套剧本文件中。10.&与&&的区别&用来建设一个姑且变量,每当碰着这个姑且变量时,城市提醒你输入一个值。&&用来建设一个耐久变量,就像用用define呼吁或带new_vlaue字句的column呼吁建设的耐久变量一样。当用&&呼吁引用这个变量时,不会每次碰着该变量就提醒用户键入值,而只是在第一次碰着时提醒一次。如,将下面三行语句存为一个剧本文件,运行该剧本文件,会提醒三次,让输入deptnoval的值:select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;将下面三行语句存为一个剧本文件,运行该剧本文件,则只会提醒一次,让输入deptnoval的值:select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;11.引入copy的目标Copy呼吁在两个数据库之间拷贝数据时出格有效,出格是该呼吁可以在两个数据库之间转达long型字段的数据。弱点:在两个数据库之间转达数据时,有也许丢失精度(lose precision)。12.问什么在修改大量的行时,我的剧本会变得很慢?当通过PL/SQL块修改一个表中的很多行时,你会建设在表上建设一个cursor,可是只有在你封锁cursor时,才会开释ROLLBACK SEGMENT,这样,当cursor如故打开时,修改进程会变慢,这是由于数据库不得不征采大量的rollback segment以便于维护读同等性。为了停止这样环境,试着在表上加一个符号字段来描写该行是否已经被修改,然后封锁该cursor,然后再打开该cursor。每次可以修改5000行.

转此:http://www.cnoug.org/viewthread.php?tid=31451

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读