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

Hvordan spooler jeg til en CSV-formateret fil ved hjælp af SQLPLUS?

Du kan også bruge følgende, selvom det indfører mellemrum mellem felter.

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;

Output vil være som:

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

Dette ville være meget mindre kedeligt end at skrive alle felterne ud og sammenkæde dem med kommaer. Du kan følge op med et simpelt sed-script for at fjerne mellemrum, der vises før et komma, hvis du vil.

Noget som dette virker måske...(mine sed-færdigheder er meget rustne, så det vil sandsynligvis kræve arbejde)

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


  1. SQL Inner Join

  2. Sådan bruges Bulk Collect-klausul med SELECT INTO-erklæring i Oracle-databasen

  3. Sådan ændres farve og skrifttyper i SQL Server Management Studio (SSMS) - SQL Server / TSQL vejledning del 12

  4. sql-server ugyldigt objektnavn - men tabeller er opført i SSMS-tabeller