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

oracle – 如何使sqlplus输出出现在一行?

发布时间:2020-12-12 13:11:11 所属栏目:百科 来源:网络整理
导读:我有一个100列的表.在SQL Plus中选择数据时,输出会包装,使其难以阅读. 我更喜欢的是要出现的水平滚动条,要么以某种方式将输出发送到更少 我在SQLPlus中运行以下语句 – SET LINESIZE 32000;SET PAGESIZE 40000;SET LONG 50000;SPOOL output.txtSELECT * FROM
我有一个100列的表.在SQL Plus中选择数据时,输出会包装,使其难以阅读.

我更喜欢的是要出现的水平滚动条,要么以某种方式将输出发送到更少

我在SQLPlus中运行以下语句 –

SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;

然后在bash我跑 –

less output.txt

输出仍然显示包装且不可读.

仅强制sqlplus不包裹行是不够的.还有必要告诉查看器您使用查看假脱机文件而不是换行.
如果你的观众少于-S你必须根据使用的选项
https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less
在Unix / Linux上你可以使用head -1 output.txt来获取文件的第一行,所以检查这是否符合预期,或者你可以使用od -c output.txt | head
查看换行符实际放在输出文件中的位置.

如果您显示LONG列并且它们的值包含换行符,则将为这些列值打印多行,并且您不能使用sqlplus设置否决它.

以下sqlplus命令可能有用:

> SET LINESIZE线条化线条的长度.在大多数情况下,linesize的最大值是32767.如果将LINESIZE设置为无效值并检查错误消息,则可以找到最大值
所以SET LINESIZE 0可能会给SP2-0267:lineize选项0超出范围(1到32767)(1)
> SET TRIMSPOOL ON否则假脱机文件中的每一行都填充空白,直到达到线条大小.
>设置TRIMOUT ON否则输出中的每一行都填充空白,直到达到线条大小.
> SET WRAP OFF如果行长于LINESIZE,则截断该行.如果lineize足够大,则不应该发生这种情况.
> SET TERMOUT OFF禁止将结果打印到输出.
这些行仍然写入假脱机文件.这可能会大大加快声明的开始时间.
> SET PAGESIZE 0设置无限页面大小并避免标题,标题等.
>还有一些其他SET参数涉及输出(NUMWIDTH,NUMFORMAT,LONG,COLSEP)和性能(ARRAYSIZE,LONGCHUNKSIZE).

您必须使用COLUMN命令格式化单个列.

例如.列名格式a30将格式化输出中的列名称,最大长度为30个字符.

如果您希望显示大小不被修复,但它应该等于行中列的实际值的大小,那么我知道的唯一方法是更改??语句的select子句以获得所需的结果并使用该
字符串连接运算符||,例如

select emp_id||' '||first_name||' '||last_name
from emp;

有关所有变量的完整说明,请参见SQL*Plus User’s Guide and Reference.

如果要重用某些设置(或COLUMN定义),可以将它们存储在文件中,并在需要时再次运行此文件.如果启动sqlplus,您甚至可以自动运行此文件.

(1)“如何找到LINESIZE最大值(它取决于系统)(Doc ID 1547262.1)”

(编辑:李大同)

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

    推荐文章
      热点阅读