使用sqlplus 几个常用命令

我想在这个年代,没有几个开发人员会去使用sqlplus,这是多么原始的工具啊,不过,也许很多DBA喜欢,而我,真的不太喜欢,还是toad好用啊!但是用不幸,我不得用经常用sqlplus,在这里鄙视一下XX保险公司里面的安全部门,也许他们真的以为他们很有道理,也是他们是中国僵化的公司里面的正常存在,但是,我想说的是,你这么搞,安全也没有,工作效率还大大的降低!其实,应该给予开发人员,至少是核心开发人员足够的权限,如果担心安全,完全可以把操作的轨迹完全记录下来,事后问责,这才不是僵化的体制!而且,这也可以延伸到我们的政治、社会当中,形成一种事后问责制,才有利于社会保持足够的弹性和创新力。

屁话说多了!

向文件中导出大量数据 

SQL>   spool   obj; /*导出到当前目录下obj.lst文件中*/ 
SQL>   set   heading   off; --禁止输出列标题 
SQL>   set   feedback   off; --禁止显示最后一行的计数反馈信息 
SQL>   set   pagesize   50000; --设置显示多少行打印一次列名 
SQL>   select   *   from   tb_src; 
                 1   13132520000                           
                 2   13132520001                                         
                 3   13132520002                                                                     
                 4   13132520003                                               
                 5   13132520004                                                                     
                 6   13132520005                                                       
                 7   13132520006                                                               
                 8   13132520007                                                       
                 9   13132520008                                                     
               10   13132520009                                                 
SQL>   spool   off; 

以文本形式下载表数据 
  oracle   缺乏将表中数据输出至文本文件的工具,因此只能利用sqlplus   和unix   工具做变通的处理 

sqlplus   –s   dbuser/oracle   <<EOF   >/dev/null 
  set   colsep   |; 
  set   echo   off; 
  set   feedback   off; 
  set   heading   off; 
  set   pagesize   0; 
  set   linesize   1000; 
  set   numwidth   12; 
  set   termout   off; 
  set   trimout   on; 
  set   trimspool   on; 
  spool   tmp.txt; 
  select   *   from   emp; 
  spool   off; 
  exit 
  EOF 
  tr   –d   ‘   ‘   <   tmp.txt   >emp.txt   删除空格,可选 
  注意:一定要用spool,如果在命令行中直接用>tmp.txt   可能会造成数据缺失,至少在Unixware7   上如此。 
  假定某域是char(n),如中间出现回车\n,则下载出的这条记录的格式将会错乱,不宜采用此方法 

平时查询的时候简单一点,下面够了

set serveroutput on size 1000000
set trimspool on
set long 5000
set linesize 100
set pagesize 9999

当然,还要经常查询表结构了

--oracle查询表结构
SELECT  
column_name,
data_type,
data_length,
nullable
from
ALL_TAB_COLUMNS
where table_name = upper('t_clmvhl' )

表名一定要大写的喔。

---------------------------------------

让我们再鄙视一下所谓的安全部门吧!

导一个数据,我得经常两次telnet

还得经过一次su的,虽然伟大的SecureCRT很强大

但是跳过跳去,真的很烦

posted @ 2009-11-20 16:47  冷侃  阅读(1110)  评论(0编辑  收藏  举报