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