我有一张有 100 列的表格。在SQL Plus输出换行中选择数据时,使其难以阅读。
我更喜欢的是出现一个水平滚动条,或者以某种方式将输出发送到 less
我在 SQLPlus 中运行以下语句 -
SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;
Run Code Online (Sandbox Code Playgroud)
然后在bash我跑 -
少输出.txt
输出仍然显示为已包装且不可读。
mir*_*173 66
强制 sqlplus 不换行是不够的。还需要告诉查看器您用来查看假脱机文件不要换行。如果你的观众是less那么-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线的长度。在大多数情况下,最大值为linesize32767。如果将 LINESIZE 设置为无效值并检查错误消息,SET LINESIZE 0则可以找到最大值,因此可能会给出SP2-0267: linesize option 0 out of range (1 through 32767) (1)SET TRIMSPOOL ON 否则 spoolfile 中的每一行都用空格填充,直到达到 linesize。 SET TRIMOUT ON 否则输出中的每一行都被空白填充,直到达到 linesize。 SET WRAP OFF如果该行比 LINESIZE 长,则截断该行。如果 linesize 足够大,则不应发生这种情况。 SET TERMOUT OFF禁止将结果打印到输出。这些行仍会写入假脱机文件。这可能会大大加快语句的执行时间。SET PAGESIZE 0 设置无限的页面大小并避免标题、标题等。SET参数与输出(NUMWIDTH、NUMFORMAT、LONG、COLSEP)和性能(ARRAYSIZE、LONGCHUNKSIZE)有关。您必须使用该COLUMN命令来格式化各个列。
例如,column name format a30将name输出中的列格式化为最大长度为 30 个字符。
如果您希望显示大小不是固定的,但它应该等于一行中列的实际值的大小,那么我知道的唯一方法是更改语句的 select 子句以获得所需的结果并使用字符串连接运算符||,例如
select emp_id||' '||first_name||' '||last_name
from emp;
Run Code Online (Sandbox Code Playgroud)
在SQL*Plus 用户指南和参考中可以找到所有变量的完整描述。
如果您想重复使用某些设置(或 COLUMN 定义),您可以将它们存储在一个文件中,并在您再次需要它们时运行该文件。如果您启动 sqlplus,您甚至可以自动运行此文件。
(1) “如何找到 LINESIZE 最大值(取决于系统)(文档 ID 1547262.1)”
您需要设置以下内容:
SET WRAP OFF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
547475 次 |
| 最近记录: |