SQLPLUS-Einstellungen zum Generieren von Tabellendatendatei zu generieren
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?
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)