sql >> Database >  >> RDS >> Oracle

Hoe kan ik met SQLPLUS naar een CSV-bestand spoolen?

Je zou ook het volgende kunnen gebruiken, hoewel het wel spaties tussen velden introduceert.

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;

Uitvoer zal zijn als:

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

Dit zou een stuk minder vervelend zijn dan alle velden uit te typen en ze met komma's samen te voegen. Je zou desgewenst een eenvoudig sed-script kunnen gebruiken om witruimte te verwijderen die vóór een komma staat.

Zoiets zou kunnen werken... (mijn sed-vaardigheden zijn erg roestig, dus dit zal waarschijnlijk werk nodig hebben)

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


  1. TimescaleDB inschakelen op een bestaande PostgreSQL-database

  2. Oracle naar Excel - PL/SQL-exportprocedure

  3. Update met parameter met behulp van de permanente bibliotheek van de kamer

  4. Atomic UPDATE .. SELECT in Postgres