set pagesize 10000 linesize 32000 trimspool on feedback off echo off longchunksize 8000 heading off long 100000 termout off spool Exportdatei.csv select '"' || FELD1 ||'";"' || FELD2 ||'";"' || FELD3 ||'";"'||FELD4||'"' from Tabellenname;
Ich habe ohne Erfolg auch andere Methoden probiert ohne dass man jedes einzelne Feld der Tabelle angeben muss. Das hat nie 100% funktioniert (Man kann einen Separator angeben und nachher Leerzeichen entfernen. Wie das gehen soll findet man ziemlich oft im Internet).
Lange hat mich auch das Abschneiden der Ausgabe nach 80 Zeichen beschäftigt.
Abhilfe fand ich schließlich mit „set long 10000“ und „set longchunksize 8000“
Die Werte sind natürlich variabel. Man kann div. Werte mit „show all“ in sqlplus abfragen.
Mit den in der SQL-Abfrage angegebenen Separatoren geht die CSV-Datei direkt ohne Probleme in einem deutschen Excel-Programm auf.
Aufruf einer SQL-Querydatei:
$BINORACLEDIR/sqlplus $ORACLE_USERNAME/$ORACLE_PASSWORD@$ORACLE_SID @SQL-Skriptname
Ausgaben aller Tabellen:
SELECT table_name
FROM all_tables 2 ;
Tabellenstruktur ausgeben:
DESCRIBE Tabellenname
truncate 80 Chars terminal csv oracle export table database