如何增加sqlplus列的输出长度?

时间:2011-09-12 07:52:45

标签: sql oracle sqlplus column-width

我有一些查询可以从模式中找出某些对象的ddl。 我得到的结果列在查询中间被截断。

如何增加列的使用?

我试过

SET SERVEROUTPUT ON SIZE 1000000;
SET LINESIZE 50000;
set pagesize 50000;
set long 50000;

但是,仍然得到相同的结果。

确实有任何帮助。

由于

10 个答案:

答案 0 :(得分:54)

我刚刚使用了以下命令:

SET LIN[ESIZE] 200

(来自http://ss64.com/ora/syntax-sqlplus-set.html)。

编辑:为清楚起见,有效命令为SET LIN 200SET LINESIZE 200

这样可以正常工作,但您必须确保控制台窗口足够宽。如果您从MS Windows命令提示符直接使用SQL Plus,则无论SQL Plus {{{ 1}}规范。

根据@simplyharsh的建议,您还可以使用LINESIZE(其中 x 是所需的长度,以字符为单位)配置各列以显示设置的宽度 - 如果您有用有一个或两个额外的大列,你只想在控制台屏幕上显示它们的值的摘要。

答案 1 :(得分:27)

此配置对我有用:

set termout off
set verify off
set trimspool on
set linesize 200
set longchunksize 200000
set long 200000
set pages 0
column txt format a120

使用column选项的linesize格式定义有助于避免在80个字符处截断。

答案 2 :(得分:13)

试试这个

  

COLUMN col_name FORMAT A24

其中24是你的宽度。

答案 3 :(得分:7)

在Linux上试试这些:

set wrap off
set trimout ON
set trimspool on
set serveroutput on
set pagesize 0
set long 20000000
set longchunksize 20000000
set linesize 4000

答案 4 :(得分:4)

除了设置LINESIZE之外,正如LordScree建议的那样,您还可以指定输出到文件,以克服控制台宽度的问题。我是这样做的:

set linesize 15000;
spool myoutput.txt;
SELECT 
...
spool off;

答案 5 :(得分:2)

实际上,即使这对我也不起作用。当我从dual执行“select dbms_metadata.get_ddl('TABLESPACE','TABLESPACE_NAME')时;”我再次只获得前三行,但这次每行被填充到15,000个字符。我能够解决这个问题:

select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),80) from dual;
select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),160) from dual;
select substr(dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA'),240) from dual;

看起来似乎应该有一种更简单的方式,但我似乎无法找到它。

答案 6 :(得分:1)

我用的是什么:

set long 50000
set linesize 130

col x format a80 word_wrapped;
select dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA') x from dual;

或者我错过了什么?

答案 7 :(得分:0)

这些建议都不适合我。我终于找到了我能做的其他事情 - dbms_output.put_line。例如:

SET SERVEROUTPUT ON
begin
for i in (select dbms_metadata.get_ddl('INDEX', index_name, owner) as ddl from all_indexes where owner = 'MYUSER') loop
  dbms_output.put_line(i.ddl);
end loop;
end;
/

动臂。它打印出我想要的一切 - 没有截断或类似的东西。这可以在sqlplus中直接使用 - 无需将其放在单独的文件或任何内容中。

答案 8 :(得分:0)

CLOB列对我来说就像是一种魅力:

set long 20000000
set linesize 32767
column YOUR_COLUMN_NAME format a32767
select YOUR_COLUMN_NAME from YOUR_TABLE;

答案 9 :(得分:-4)

在Windows上,您可以尝试:

  • 右键单击sqlplus窗口
  • 选择属性 - >布局
  • 将屏幕缓冲区大小增加到1000