wake-up-neo.net

wie erhöht man die Ausgabelänge der sqlplus-Spalte?

Ich habe einige Abfragen, um die Ddl einiger Objekte aus einem Schema herauszufinden ... Ich bekomme die Ergebnisspalten in der Mitte der Abfragen abgeschnitten.

Wie kann ich das mit der Spalte erhöhen?

Ich habe es mit versucht 

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

Aber immer noch das gleiche Ergebnis.

Jede Hilfe in der Tat.

Vielen Dank

48
Mohamed Saligh

Ich habe gerade den folgenden Befehl verwendet:

SET LIN[ESIZE] 200

(von http://ss64.com/ora/syntax-sqlplus-set.html ).

BEARBEITEN: Zur Verdeutlichung sind gültige Befehle SET LIN 200 oder SET LINESIZE 200.

Das funktioniert gut, aber Sie müssen sicherstellen, dass Ihr Konsolenfenster groß genug ist. Wenn Sie SQL Plus direkt über die MS Windows-Eingabeaufforderung verwenden, wird die Zeile unabhängig von der "Screen Buffer Size Width" -Eigenschaft unabhängig von der SQL Plus LINESIZE-Spezifikation automatisch in die Zeile umgebrochen.

Wie von @simplyharsh vorgeschlagen, können Sie auch einzelne Spalten so konfigurieren, dass die eingestellten Breiten angezeigt werden, indem Sie COLUMN col_name FORMAT Ax verwenden (wobei x die gewünschte Länge in Zeichen ist) möchten eine Zusammenfassung ihrer Werte auf dem Konsolenbildschirm anzeigen.

51
oliver-clare

Diese Konfiguration funktioniert für mich:

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

Die column-Formatdefinition mit der Option linesize half, die Verkürzung bei 80 Zeichen zu vermeiden.

26
Martin Irigaray

Versuche dies

SPALTE col_name FORMAT A24

wo 24 sind sie breit.

12
simplyharsh

Unter Linux versuchen Sie Folgendes:

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

Neben der Einstellung von LINESIZE, wie von LordScree vorgeschlagen, können Sie auch die Ausgabe in eine Datei angeben, um das Problem mit der Konsolenbreite zu beheben. So mache ich es:

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

Eigentlich hat auch das bei mir nicht funktioniert. Wenn ich ausgeführt habe "select dbms_metadata.get_ddl ('TABLESPACE', 'TABLESPACE_NAME') von dual;" Ich bekam wieder nur die ersten drei Zeilen, aber diesmal wurde jede Zeile auf 15.000 Zeichen aufgefüllt. Ich konnte das umgehen mit:

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;

Es schien sicher, dass es einen einfacheren Weg geben sollte, aber ich konnte es nicht finden.

2
William Fraser

Was ich benutze:

set long 50000
set linesize 130

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

Oder fehlt mir etwas? 

1
April Mc

Keiner dieser Vorschläge hat für mich funktioniert. Ich fand endlich etwas anderes, was ich tun konnte - dbms_output.put_line. Zum Beispiel:

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;
/

Boom. Es druckte alles aus, was ich wollte - kein Abschneiden oder ähnliches. Und das funktioniert direkt in sqlplus - Sie müssen es nicht in eine separate Datei oder irgendetwas packen.

0
ArtOfWarfare