暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

sqlplus答疑解惑

667

一位好兄弟前两天说某个老系统只能通过服务器上的sqlplus访问,所以提了几个和sqlplus相关的问题。官方或者第三方的图形化客户端,能简化我们的操作,然而不是所有的场景都可以使用。


问题1

中文还是什么的,显示问号,好像有数字类型的也显示问号,number(19,4)这种,好像显示5.????


一般都是数据库字符集和操作系统字符集不同,导致显示不同的问题,可以登录数据库,看下当前的语言字符集,

    SQL> select userenv('language') from dual;
    USERENV('LANGUAGE')
    ----------------------------------------------------
    AMERICAN_AMERICA.AL32UTF8


    然后可以设置环境变量NLS_LANG,保证一致,

      export NLS_LANG=AMERICAN_AMERICA.AL32UTF8


      同样地,有些客户端,例如SecurCRT,可以设置会话的字符集,应该是相同道理。PLSQL Developer碰到这种问题,同样能解决,可以参考《PLSQL Developer中文乱码问题》。


      问题2

      查询结果导出excel文件,该怎么搞?


      可以使用spool,如下所示,"spool+待存储的文件名"相当于开始,"spool off"之前的所有SQL和输出的结果集,都会写入到这个文件中,

        spool test.csv
        SQL...
        spool off


        还可以对输出进行格式化,可以参考《spool导出格式的问题》,通过sqlplus的显示控制,优化结果集展示,

          set colsep' '      --行的标题列的分隔符
          set linesize(line) --设置sqlplus输出的最大行宽
          set pagesize       --设置页面的最大行数 缺省为24,为了避免分页,可设定为0
          set serveroutput on|off
          set echo on        --显示文件中的每条命令及其执行结果,缺省为on 
          set echo off --不显示文件中的命令,只显示其执行结果
          set term on       --查询结果既显示于假脱机文件中(spool指定输出的文件),又在SQLPLUS中显示
          set term off      --查询结果仅仅显示于假脱机文件中(spool指定输出的文件)
          set heading off    --让结果行的标题不显示,缺省为on 
          set heading on --让结果行的标题显示
          set trimout on    --去除标准输出每行的拖尾空格,缺省为off 
          set trimspool on   --去除重定向(spool)输出每行的拖尾空格,缺省为off 
          set timing off --显示每条sql命令的耗时,缺省为off
          set verify off     --是否显示替代变量被替代前后的语句


          问题3

          查询出来的东西,没几列,长度不宽,但是换行很严重,基本没法看,怎么能让输出格式化一下?


          举个例子,dba_tables视图中owner定义为varchar2(128),table_name定义为varchar2(128),


          如果直接写owner和table_name,就像这种,折行显示了,


          此时可通过col设置owner列宽度为15,设置table_name列宽度为35,显示就正常了,


          官方或者第三方的图形化客户端软件,从操作上,确实更简单,但是有时候,受限于客观条件,不一定能用,而且图形化软件最明显的问题,就是屏蔽了很多操作的细节,如果只是"用",其实是够了,但如果需要更深入的了解数据库,命令行的一些操作还是可以了解掌握的,而且如果用熟了,可能会相对与图形客户端更直接。



          如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,


          近期更新的文章:
          MySQL的auto-rehash自动补全功能
          MySQL借助于LIMIT和OFFSET实现的高性能分页功能
          MySQL中"更新时间"字段的更新时点问题
          最近碰到的一些问题
          磁盘空间分配的初次尝试

          近期的热文:
          "红警"游戏开源代码带给我们的震撼

          文章分类和索引:
          公众号1000篇文章分类和索引
          文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论