Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment puis-je mettre en file d'attente un fichier au format CSV à l'aide de SQLPLUS ?

Vous pouvez également utiliser ce qui suit, bien qu'il introduit des espaces entre les champs.

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;

La sortie ressemblera à :

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

Ce serait beaucoup moins fastidieux que de taper tous les champs et de les concaténer avec des virgules. Vous pouvez suivre avec un simple script sed pour supprimer les espaces qui apparaissent avant une virgule, si vous le souhaitez.

Quelque chose comme ça pourrait fonctionner... (mes compétences en sed sont très rouillées, donc cela nécessitera probablement du travail)

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