Spooling in Oracle fügt Leerzeichen in Spalten... wie kann ich es vermeiden?
Ich bin das speichern der Ergebnisse einer Abfrage in eine csv-Datei, aber unerwünschte Leerzeichen werden Hinzugefügt, um einige der Felder, wenn die ursprünglichen Daten in der Datenbank nicht enthalten.
Beispielsweise, wenn eine der Zeilen in der DB die Werte "wie", "werden" und "Sie", was ich in der Datei nach spooling ist eine Zeile wie :
"how | are |you "
(der editor lässt mich nicht mehr schreiben Leerzeichen, aber Sie können sich vorstellen, es gibt viele von Ihnen)
Wenn ich nur wollen, es zu sein :
"how|are|you"
Ich habe versucht, mehrere Einstellungsmöglichkeiten, mit keinem Ergebnis. Gibt es eine Möglichkeit zu vermeiden, dass sich diese Räume? Vielen Dank im Voraus!
Was ich so weit gekommen:
SET ECHO OFF;
SET NEWP 0 SPACE 0 PAGES 0 FEED OFF HEAD OFF TRIMS OFF TRIM OFF TAB OFF;
set colsep '|';
set lines 130;
spool myfile.csv
SELECT * FROM SOME_TABLE;
spool off;
Diese wird in einem Aufruf von sqlplus.
- Können Sie uns zeigen, einige Ihrer code?
- Hinzugefügt, um die main-post 😉
- Was ist das Endziel, diese in ein CSV-format? E. g., willst du einfach nur in der Lage sein, um es sauber in Excel? Oder ist es für die nachfolgende automatische Verarbeitung der Daten?
- Es ist der zweite Fall, die Daten weiter zu verarbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielen Dank für das update. Sie sind also versucht, so etwas wie dieses:
Leider von SQL*Plus ist nicht ausgelegt für das entladen von Daten wie diese - der separator ist ausschließlich für die Spalten. Sie müssen, verketten Sie die Werte mit Rohren sich z.B.
col1 || '|' || col2 || '|' || col3
(und watch out für die Spalte Formatierung, z.B. Datum).nls_date_format
und Ihrem desktop-Territorium Einstellungen, sofern Sie explizit festlegen eines formats mitto_char
. Stellen Sie außerdem sicherlinesize
festgelegt ist, die groß genug für den output-Datensatz.Ihre Tabelle enthält Spalten definiert als
CHAR(nn)
die füllt die Werte mit Leerzeichen auf die volle Länge oder Ihre Anwendung gespeichert werden, die zusätzliche Leerzeichen entlang der Saiten.verwenden
rtrim
zu entfernen nachgestellte Leerzeichen - nurverwenden
verwenden
ltrim
wie gut, wenn man sowohl führende als auch nachgestellte LeerzeichenUPDATE
Wie schon im Kommentar der Funktion
trim
können stattdessen verwendet werden