Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie spoole ich mit SQLPLUS in eine CSV-formatierte Datei?

Sie könnten auch Folgendes verwenden, obwohl es Leerzeichen zwischen Feldern einfügt.

set colsep ,     -- separate columns with a comma
set pagesize 0   -- No header rows
set trimspool on -- remove trailing blanks
set headsep off  -- this may or may not be useful...depends on your headings.
set linesize X   -- X should be the sum of the column widths
set numw X       -- X should be the length you want for numbers (avoid scientific notation on IDs)

spool myfile.csv

select table_name, tablespace_name 
  from all_tables
 where owner = 'SYS'
   and tablespace_name is not null;

Die Ausgabe sieht folgendermaßen aus:

    TABLE_PRIVILEGE_MAP           ,SYSTEM                        
    SYSTEM_PRIVILEGE_MAP          ,SYSTEM                        
    STMT_AUDIT_OPTION_MAP         ,SYSTEM                        
    DUAL                          ,SYSTEM 
...

Das wäre viel weniger mühsam, als alle Felder abzutippen und mit den Kommas zu verketten. Sie könnten mit einem einfachen sed-Skript weitermachen, um Leerzeichen zu entfernen, die vor einem Komma erscheinen, wenn Sie möchten.

So etwas könnte funktionieren ... (meine sed-Kenntnisse sind sehr eingerostet, also wird dies wahrscheinlich Arbeit erfordern)

sed 's/\s+,/,/' myfile.csv