ITPub博客

首页 > 数据库 > 数据库开发技术 > sqlplus答疑解惑

sqlplus答疑解惑

原创 数据库开发技术 作者:bisal 时间:2022-09-19 07:50:00 0 删除 编辑

一位好兄弟前两天说某个老系统只能通过服务器上的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.csvSQL...spool off


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

set colsep' '      --行的标题列的分隔符set linesize(line) --设置sqlplus输出的最大行宽 set pagesize       --设置页面的最大行数 缺省为24,为了避免分页,可设定为0set serveroutput on|offset 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的个人杂货铺;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
Oracle ACE,10g/11g OCP,11g OCM,国内首批Oracle YEP成员(Oracle Young Expert Program,Oracle用户组年轻专家项目),EXIN DevOps Master,Oracle爱好者,微信公众号:bisal的个人杂货铺

注册时间:2022-06-21

  • 博文量
    539
  • 访问量
    2801297