oracle 扩展列长度,sql-如何增加sqlplus列的输出长度?

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

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

如何增加列的宽度?

我尝试过

SET SERVEROUTPUT ON SIZE 1000000;

SET LINESIZE 50000;

set pagesize 50000;

set long 50000;

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

9个解决方案

58 votes

我刚刚使用了以下命令:

SET LIN[ESIZE] 200

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

编辑:为清楚起见,有效的命令是COLUMN col_name FORMAT Ax或SET LINESIZE 200。

这可以正常工作,但是您必须确保控制台窗口足够宽。 如果您直接从MS Windows Command Prompt使用SQL Plus,则无论任何SQL Plus COLUMN col_name FORMAT Ax规范如何,控制台窗口都会自动将行换行为“屏幕缓冲区大小宽度”属性所设置的值。

正如@simplyharsh所建议的那样,您还可以使用COLUMN col_name FORMAT Ax(其中x是所需的长度,以字符为单位)将各个列配置为显示设置的宽度-如果您有一两列超大列并且只希望显示一个 控制台屏幕中其值的摘要。

oliver-clare answered 2019-11-15T11:17:02Z

27 votes

此配置为我工作:

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

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

Martin Irigaray answered 2019-11-15T11:17:35Z

13 votes

试试这个

COLUMN col_name FORMAT A24

宽度是24。

simplyharsh answered 2019-11-15T11:18:09Z

8 votes

在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

M.R answered 2019-11-15T11:18:34Z

4 votes

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

set linesize 15000;

spool myoutput.txt;

SELECT

...

spool off;

Marcel answered 2019-11-15T11:19:00Z

2 votes

实际上,即使那样对我也不起作用。 当我执行“从双选择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;

似乎应该有一种更简单的方法,但是我似乎找不到它。

William Fraser answered 2019-11-15T11:19:35Z

1 votes

我用什么:

set long 50000

set linesize 130

col x format a80 word_wrapped;

select dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA') x from dual;

还是我错过了什么?

April Mc answered 2019-11-15T11:20:07Z

0 votes

这些建议都不对我有用。 我终于找到了我可以做的其他事情-sqlplus。例如:

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中工作-无需将其放在单独的文件中或任何其他文件中。

ArtOfWarfare answered 2019-11-15T11:20:42Z

-4 votes

在Windows上,您可以尝试以下操作:

在sqlplus窗口中右键单击

选择属性->布局

将屏幕缓冲区大小宽度增加到1000

prasanna answered 2019-11-15T11:21:30Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值