Es ist wirklich ärgerlich, wenn ich einen select-Befehl in SQL * Plus ausführe, zum Beispiel:
SELECT * FROM books;
Die Ausgabe ist wirklich schlecht formatiert und nicht lesbar (Zeilenzellen stehen nicht in einer Reihe, sondern werden durch Zeilenumbrüche getrennt usw.):
Wie kann ich es konfigurieren, um SELECT-Ergebnisse auf eine schönere Weise anzuzeigen?
BEARBEITEN:
Dies ist der Inhalt meiner login.sql-Datei:
SET ECHO OFF
SET SERVEROUTPUT ON SIZE 1000000
SET PAGESIZE 999
SET LINESIZE 132
EDIT2:
Affer die LINESIZE erhöhen:
SET LINESIZE 32000
Es sieht jetzt so aus:
Erhöhen Sie die Zeilengröße, z. B. SET LINESIZE 32000
oder SET WRAP OFF
verwenden (dies wird jedoch lange Werte abschneiden)
SQL Plus ist ein einfaches Befehlszeilenprogramm. Es ist nicht wirklich für eine hübsche Berichterstattung gedacht. Es enthält jedoch einige Formatierungsbefehle, die im SQL Plus Benutzerhandbuch beschrieben werden. Finde mehr heraus .
Beispielsweise können Sie die Spalte TITLE so formatieren, dass nur die ersten zwanzig Zeichen und die Spalte SUMMARY in ihrer Gesamtheit wie folgt angezeigt werden:
COLUMN title FORMAT a20 TRUNCATED
COLUMN summary FORMAT a4o Word_WRAPPED
Auf diese Weise können Sie Ihre Abfrage übersichtlicher anzeigen, ohne Formatierungsbefehle in ihre Projektion einzubetten.
Alternativ können Sie auch eine IDE wie Quest TOAD oder Oracle SQL Developer verwenden. Zu diesen Tools gehört ein Abfrage-Browser, der unsere Abfrageergebnisse automatisch in einem ansprechenderen Raster anzeigt. (Andere ähnliche Tools sind verfügbar).
Einige mögen diesen Ratschlag nicht mögen (ich kann mir ein paar DBAs vorstellen, die SqlPlus lieben), aber Sie möchten vielleicht einen IDE like Toad oder SQL Developer verwenden. Wenn Sie noch nicht mit Oracle vertraut sind, werden Sie sich bei sqlplus so fühlen, als wären Sie in die Vergangenheit zurückgesprungen! IMO, verbringen Sie Ihre Zeit damit, Oracle zu lernen, nicht SQLPlus. (Oh, und lesen Sie die Anleitung Concepts , während Sie in Ihrem IDE Ihrer Wahl herumspielen)
Definieren Sie einfach die Spaltenbreite, damit sie zum tatsächlichen Inhalt der Spalten passt
col column_name1 format a20 -- sets column to be 20 characters wide
col column_name2 format a15 -- sets column to be 15 characters wide
set line 80
select column_name1, column_name2 from books;
Das sollte dir helfen.
Machen Sie ein Skript wie unten
#!/bin/ksh
FILE="/tmp/queryResult.csv"
sqlplus -s /nolog << !EOF!
connect username/password
SET PAGESIZE 50000
SET LINESIZE 250
SET NUMWIDTH 5
SET FEEDBACK OFF
set echo off
set heading on
set headsep off
set wrap off
SET COLSEP ","
column Title format a22
column Summary format a15
SPOOL $FILE
Select * from books;
SPOOL OFF
EXIT
!EOF!
Speichern Sie das Skript in einer Datei, nämlich sqlscript.sql , Und legen Sie die Berechtigung für die Datei fest
chmode +x sqlscript.sql
führen Sie das Skript aus und geben Sie den Befehl less an
./sqlscript.sql | less -S
Mit der Option "S" können Sie mit den Pfeiltasten blättern, wenn die Ausgabe länger ist als die im Terminal festgelegten Spalten.
Alternativ können Sie FILE = "/ tmp/queryResult.csv" in einem Texteditor Ihrer Wahl herunterladen und öffnen.
Passen Sie die Zeichengröße LINESIZE, NUMWIDTH, (a22) an Ihre Anforderungen an
Dies kann die Ausgabe schöner machen:
SET PAGESIZE 0
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 1000
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET MARKUP HTML OFF SPOOL OFF
SET COLSEP ' '
Quelle: http://larig.wordpress.com/2011/05/29/formatting-Oracle-output-in-sqlplus/
Das hat für mich funktioniert:
SELECT ISBN, SUBSTR(TITLE, 0, 16), SUBSTR(SUMMARY, 0, 16), DATE_PUBL, PAGE_COUNT FROM books;
Zusätzlich zu all diesen Antworten:
set colsep "&TAB"