web-dev-qa-db-ja.com

sqlplus列の出力長を増やす方法は?

スキーマからオブジェクトのddlを見つけるためのクエリがいくつかあります。取得中の結果列は、クエリの途中で切り捨てられます。

列の幅を大きくするにはどうすればよいですか?

私が試した

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

しかし、私はまだ同じ結果を得ています。

52
Mohamed Saligh

次のコマンドを使用しました。

SET LIN[ESIZE] 200

http://ss64.com/ora/syntax-sqlplus-set.html から)。

編集:明確にするために、有効なコマンドはSET LIN 200またはSET LINESIZE 200です。

これは正常に機能しますが、コンソールウィンドウが十分に広いことを確認する必要があります。 MS Windowsコマンドプロンプトから直接SQL Plusを使用している場合、コンソールウィンドウは、「スクリーンバッファーサイズWidth」プロパティで行を自動的にラップします。 SQL Plus LINESIZEの指定に関係なく、に設定されます。

@simplyharshで提案されているように、COLUMN col_name FORMAT Ax(ここでxは、文字)-これは、1つまたは2つの余分な大きな列があり、コンソール画面にそれらの値の概要を表示したい場合に便利です。

56
oliver-clare

この構成は私のために働いています:

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文字での切り捨てを回避するのに役立ちました。

27
Martin Irigaray

これを試して

COLUMN col_name FORMAT A24

24は幅です。

13
simplyharsh

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
7
M.R

LordScreeが示唆したように、LINESIZEの設定に加えて、コンソール幅の問題を克服するために、ファイルへの出力を指定することもできます。以下にその方法を示します。

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

実際、それでもうまくいきませんでした。 「select dbms_metadata.get_ddl( 'TABLESPACE'、 'TABLESPACE_NAME')from dual;」を実行したとき再び最初の3行だけを取得しましたが、今回は各行が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;

確かにもっと簡単な方法があるはずのように見えましたが、見つけることができなかったようです。

2
William Fraser

私が使用するもの:

set long 50000
set linesize 130

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

それとも何か不足していますか?

1
April Mc

これらの提案はどれも役に立たなかった。やっと何か他のことができた-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で直接動作します-別のファイルなどに入れる必要はありません。

0
ArtOfWarfare