sqlplus Entfernen \ r \ n \ t von der Spule
Frage
Gibt es eine SQL * Plus-Befehl \r
\n
and\t
aus der Ergebnismenge zu entfernen, die auf die Spool-Datei ausgehen wird? Das heißt, "trimmen" jeden Datensatz?
Wir haben set trim on
in der Vergangenheit verwendet, aber es scheint nicht zu Bue, was wir jetzt brauchen. Ich versuche, Oracle übersetzen, chr Funktionen in der SQL-Abfrage zu vermeiden aufrufen.
Beispiel:
set termout off
set spool somefile.dat
set lin 600
select data from mytable;
set spool off;
exit;
Meine Abfrage gibt diese
|DATA|
|\n \t\t\t\t\t thisistheactualdata \t\t\t\t\t\t\n|
Und ich möchte dies halten in meiner Spool-Datei
thisistheactualdata
aktualisieren
Nun, wir am Ende so etwas wie dies zu tun.
set tab off;
spool /home/oracle/out.dat
set linesize 20
set termout off
set trim on
select regexp_replace(l,'(\t|\n)','') from test;
spool off;
exit;
Aber einige schlechte Nachrichten: Wir müssen das 8 im Orakel laufen, und REGEXP_REPLACE scheint nicht vorhanden zu sein. : (
Vielen Dank im Voraus.
Lösung
Ich glaube nicht, dass du in der Lage sein, dies zu tun mit einer SQL Plus-Richtlinie. SQL Plus ist ein ziemlich Thin-Client ist nicht dafür ausgelegt, die Daten zu berühren aus dem Ergebnis selbst festgelegt.
Wenn Sie nicht über die integrierten SQL-Funktionen verwenden möchten, um die Ausgabe zu ändern dann ich denke, dass Sie stecken mit Post-Verarbeitung einer Spool-Datei.
EDIT von DCookie: Da ich die OP ursprünglichen Antrag auf eine nicht-translate / CHR-basierte Lösung verpasst (konzentrierte ich mich auf die Klage des OP, dass sie mit 8i steckten), in Fairness dpbradley ich meine Antwort auf zurückziehen werde und schließen es als Teil dieses ein, da es eindeutig betrachtet wurde. Hier ist, was ich schrieb:
Sie könnten versuchen, die UEBER Funktion für Ihre Oracle 8 Situation:
SELECT TRANSLATE(L,'A'||CHR(10)||CHR(9)||CHR(13),'A') FROM test;
Andere Tipps
Ohne es zu versuchen, tut
SET TAB OFF
hat den gewünschten Effekt?