Answers:
强制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
行的长度。在大多数情况下,最大值为linesize
32767。如果将LINESIZE设置为无效值并检查错误消息,SET LINESIZE 0
则可以找出最大值,这样可以得出SP2-0267: linesize option 0 out of range (1 through 32767)
(1)SET TRIMSPOOL ON
否则,假脱机文件中的每一行都将填充空白,直到达到行大小为止。 SET TRIMOUT ON
否则,输出中的每一行都将填充空白,直到达到行大小为止。 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;
有关所有变量的完整说明,请参见《SQL * Plus用户指南和参考》。
如果要重用某些设置(或COLUMN定义),可以将它们存储在文件中,并在需要时再次运行该文件。如果启动sqlplus,甚至可以自动运行此文件。
(1)“如何查找LINESIZE最大值(取决于系统)(文档ID 1547262.1)”
LONGCHUNKSIZE
不仅仅是性能,这似乎是需要避免不必要的换行除了到LINESIZE
,只是不能使用输出这个实验从DBMS_METADATA.get_ddl()