Oracle
 sql >> Database >  >> RDS >> Oracle

Come si esegue lo spooling in un file formattato CSV utilizzando SQLPLUS?

Puoi anche usare quanto segue, sebbene introduca spazi tra i campi.

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;

L'output sarà come:

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

Questo sarebbe molto meno noioso che digitare tutti i campi e concatenarli con le virgole. Puoi continuare con un semplice script sed per rimuovere gli spazi bianchi che appaiono prima di una virgola, se lo desideri.

Qualcosa del genere potrebbe funzionare... (le mie abilità di sed sono molto arrugginite, quindi probabilmente avrà bisogno di lavoro)

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