sql >> Databasteknik >  >> RDS >> Oracle

Hur man korrekt exporterar resultat av select-satsen till Csv-fil med spool i oracle sql-utvecklare

Ditt val är ofullständigt eftersom du inte har en from klausul, men inte säker på om du har tappat bort den i kopiera och klistra in. Som det är finns det inget att köra, eftersom den partiella satsen aldrig exekveras (ingen avslutande ; eller / på nästa rad). Om du hade en from farmers; sats så skulle det troligen visa kommandot plus ett ORA-00923-fel.

Du kan inte bara sätta ett kommatecken mellan fälten, du måste sammanfoga fälten med det tecknet med hjälp av || sammanlänkningssymbol:

spool 'c:\farmerList.csv'

select FIRSTNAME
    ||','|| LASTNAME
    ||','|| TRN
    ||','|| CELL
    ||','|| PARISH
from farmers;

ger en fil som innehåller

Joe,Grundy,X,Y,Ambridge

Fälten behöver inte vara på separata rader, jag tycker bara att det är lättare att läsa och hålla reda på kommatecken.

Du behöver inte / efter spool-kommandot - som kommer att exekvera den sista satsen före spool , om det finns ett - och du behöver inte citattecken runt spoolfilens namn om det inte innehåller mellanslag, men de skadar inte.

Det finns också en set colsep kommando som du kan använda för att göra kolumnavgränsaren till ett kommatecken, men du måste oroa dig för utfyllnad, så jag tycker att det är lättare att sammanfoga kolumnerna som du (nästan) gör.

Förutom att det är för SQL*Plus, eftersom jag inte märkte SQL Developer-referensen i titeln. Spool är lite udda i Developer eftersom det verkar fånga och eka saker som du förmodligen inte vill ha, och inte alla set kommandon fungerar (vilka beror på versionen).

Det säkrare och föredragna sättet, tror jag, är att köra en normal fråga utan sammanlänkade kommatecken:

select FIRSTNAME, LASTNAME, TRN, CELL, PARISH
from farmers;

och med 'kör' istället för 'kör skript', så att resultaten visas i rutnätsvyn i frågeresultatfönstret. Högerklicka på rutnätet och välj "exportera". Du kan sedan spara som en CSV, eller till och med som en XLS, och kan välja att inte ha en rubrikrad om du föredrar det.



  1. Exekver MySQL SELECT *-fråga parallellt

  2. PostgreSQL Bitvisa operatorer med bitvarierande kan inte AND bitsträngar av olika storlekar

  3. MySQL Snabbtips:Använd funktionen LENGTH och TRIM

  4. Varför ger denna SQL-kod fel 1066 (Inte unik tabell/alias:'användare')?