スキーマからオブジェクトのddlを見つけるためのクエリがいくつかあります。取得中の結果列は、クエリの途中で切り捨てられます。
列の幅を大きくするにはどうすればよいですか?
私が試した
SET SERVEROUTPUT ON SIZE 1000000;
SET LINESIZE 50000;
set pagesize 50000;
set long 50000;
しかし、私はまだ同じ結果を得ています。
次のコマンドを使用しました。
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つの余分な大きな列があり、コンソール画面にそれらの値の概要を表示したい場合に便利です。
この構成は私のために働いています:
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文字での切り捨てを回避するのに役立ちました。
これを試して
COLUMN col_name FORMAT A24
24は幅です。
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
LordScreeが示唆したように、LINESIZEの設定に加えて、コンソール幅の問題を克服するために、ファイルへの出力を指定することもできます。以下にその方法を示します。
set linesize 15000;
spool myoutput.txt;
SELECT
...
spool off;
実際、それでもうまくいきませんでした。 「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;
確かにもっと簡単な方法があるはずのように見えましたが、見つけることができなかったようです。
私が使用するもの:
set long 50000
set linesize 130
col x format a80 Word_wrapped;
select dbms_metadata.get_ddl('TABLESPACE','LM_THIN_DATA') x from dual;
それとも何か不足していますか?
これらの提案はどれも役に立たなかった。やっと何か他のことができた-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
で直接動作します-別のファイルなどに入れる必要はありません。