Frage

Hat jemand eine gute Reihe von SQLPLUS -Konfigurationsanweisungen, um eine bestimmte SQL -Abfrage in eine gut abgetrennte Ausgabe zu verwandeln, um in eine Tabelle oder eine weitere Verarbeitung zu ziehen?

War es hilfreich?

Lösung

Schauen Sie sich die Oracle -Dokumentation an:

Sie können eine Registerkarte in Oracle erstellen, indem Sie den ASCII -Wert 9 der Registerkarte 9 und die CHR -Funktion verwenden:

select chr(9) from dual;

Andere Tipps

Wie Justin in seinem Link betonte, verwendete es die set colsep Funktion SQLPLUS Befehl speichert das Tippen eines Trennscheiders für jede Spalte.

Aber für Tabellendelimited, set colsep Chr(9) Wird nicht funktionieren.

Verwenden Sie für Unix oder Linux set colsep ' ' mit dem Speicherplatz zwischen den einzelnen Zängen eine typisierte Registerkarte.

Verwenden Sie für Windows diese Einstellungen:

col TAB# new_value TAB NOPRINT
select chr(9) TAB# from dual;
set colsep "&TAB"

select * from table;

Ein bestimmtes Skript, das ich mehr als einmal gestohlen habe Daten an eine flache Datei extrahieren. Wenn ich eine schnelle und schmutzige flache Datei aus SQL*Plus brauchte. Ich würde jedoch dazu neigen, die DUIL DUPP_CSV -Funktion zu bevorzugen, die Tom früher auf diesem Thread für einen laufenden Prozess gepostet hat.

Ich habe eine dumme Lösung. Es hat sehr gut funktioniert.

Lösung

SELECT column1 || CHR(9) || column2 || CHR(9) || column3 ... ...
FROM table

Prinzip hinter

Eigentlich ist es nur ein String-Verkettung.

CHR (9) -> 't'

Spalte1 || CHR (9) || Spalte2 -> concat (Spalte1, ' t', Spalte2)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top