sql >> Database >  >> RDS >> Oracle

Hoe te schrijven naar een CSV-bestand met Oracle SQL*Plus

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) is een interactieve tool die bij elke moderne Oracle-installatie wordt geïnstalleerd. SQL Plus stelt u in staat verder te gaan dan de standaard databasequery's met batches, scripts en berekeningen die buiten het normale bereik van Oracle vallen.

Het is zelfs mogelijk, zoals we hieronder zullen onderzoeken, om tekstbestanden te genereren, zoals .csv , met behulp van de uitvoer van een bepaalde databasequery.

SQL*Plus starten

Afhankelijk van uw Oracle-installatie heeft u mogelijk toegang tot een van de vele verschillende versies of "modi" waarin u de SQL*Plus-toepassing kunt uitvoeren.

SQL*Plus-opdrachtregel

Als u SQL*Plus Command-line . wilt gebruiken , geef je gewoon de sqlplus commando vanuit je shell:

$ sqlplus

Dit zal proberen u te verbinden met de standaard database en u wordt gevraagd uw gegevens in te voeren om uzelf te verifiëren.

In het geval dat u verbinding moet maken met een andere database of gebruik een andere user (schema ), probeer het volgende en vervang zo nodig uw eigen waarden:

$ sqlplus schema@//machine.domain:port/database

iSQL*Plus

Als je er toegang toe hebt, wil je misschien iSQL*Plus . gebruiken , een browsergebaseerde versie van de SQL*Plus-opdrachtregeltool.

Dit wordt bereikt door simpelweg naar de iSQL*Plus URL te gaan voor uw database en installatie. De exacte URL varieert, maar heeft meestal de volgende indeling:http://machine_name.domain:port/isqlplus

SQL*Plus voor Windows

Als u Windows gebruikt, is er ook een Windows GUI-versie van SQL*Plus, die doorgaans vanuit uw startmenu kan worden gestart:Start > Programs > Oracle > Application Development > SQL Plus .

Een query uitvoeren naar een bestand

Nu u bent verbonden met SQL*Plus, kunnen we beginnen met het maken van ons bestand.

SQL*Plus-configuratie wijzigen

De eerste stap is het configureren van enkele SQL*PLus-systeeminstellingen met behulp van de SET verklaring.

Voor dit voorbeeld zullen we deze instellingen één keer handmatig wijzigen voorafgaand aan onze zoekopdracht en het genereren van bestanden, maar indien gewenst kunt u de standaardwaarden van verschillende instellingen wijzigen in uw User Profile , te vinden in de login.sql bestand.

set colsep ,
set headsep off
set pagesize 0
set trimspool on

De eerste paar instellingen die je normaal gesproken niet wilt veranderen, maar we zullen kort uitleggen wat ze bereiken.

  • colsep is het scheidingsteken dat wordt gebruikt om uw kolommen te splitsen. Voor een .csv bestand, is dit een simpele komma.
  • headsep is het scheidingsteken voor de koprij (als u er een nodig hebt). In dit voorbeeld voeren we de koprij niet uit, dus laten we dit off .
  • pagesize is het aantal regels "per pagina". Dit is een enigszins archaïsche instelling die bedoeld is om af te drukken zonder al te veel regels per pagina. Met een waarde van 0 , we gebruiken geen pagina's omdat we naar een bestand gaan. Als u ervoor kiest om de header weer te geven rij, stel pagesize in tot een zeer groot aantal (groter dan het verwachte aantal recordresultaten in de zoekopdracht), dus uw kopregel wordt slechts één keer weergegeven in plaats van één keer 'per pagina'.
  • trimspool ingesteld op on verwijdert eenvoudig de volgende witruimte.

Nu moeten de laatste twee instellingen worden gewijzigd, afhankelijk van uw vraag.

set linesize #
set numwidth #
  • Voor linesize , de # waarde moet het totale aantal uitvoerkolommen in uw resulterende zoekopdracht zijn.
  • numwidth is de kolombreedte (aantal spaties) die wordt gebruikt bij het uitvoeren van numerieke waarden.

SPOOL-opdracht

Opmerking:de SPOOL opdracht is niet beschikbaar in de browsergebaseerde SQL*Plus-versie, iSQL*Plus . Om bestanden te genereren tijdens het gebruik van iSQL*Plus, wijzigt u de noodzakelijke voorkeursinstellingen zodat ze rechtstreeks naar een bestand worden uitgevoerd.

Nu onze instellingen zijn geregeld, moeten we SQL*Plus nu vertellen om een ​​bestand uit te voeren. Dit wordt bereikt met behulp van de SPOOL verklaring.

Terwijl SPOOL is actief , zal SQL*PLus de uitvoer van elke query opslaan in het opgegeven bestand.

Daarom is het volgende commando om in te voeren spool :

spool file_path

Iets vooruitspringen, na uw zoekopdracht is ingevoegd, u moet ook spool stoppen dus de bestandsuitvoer wordt gesloten met behulp van de spool off commando:

spool off

Voeg de query in

De laatste stap nadat de instellingen zijn gewijzigd en spool draait, is om uw query in te voegen. Voor ons eenvoudige voorbeeld geven we alle boeken uit onze books tafel.

SELECT
  title,
  primary_author
FROM
  books;

Vergeet de puntkomma niet om uw query-instructie te sluiten en voer vervolgens de bovengenoemde spool off in commando.

Dat is alles, u heeft een nieuw tekstbestand gegenereerd met de resultaten van uw zoekopdracht met SQL*Plus.

Tip:een scriptbestand gebruiken

In plaats van elke regel handmatig in te voeren, wordt aangeraden om alle instellingen in een nieuw scriptbestand in te voeren dat u met één opdracht in SQL*Plus kunt uitvoeren.

Maak een nieuw scriptbestand aan met de EDIT verklaring:

EDIT file_name

Plak nu de volledige lijst met scriptopdrachten in uw nieuwe bestand en sla op. De volledige inhoud van ons voorbeeldscript vindt u hieronder.

set colsep ,
set headsep off
set pagesize 0
set trimspool on
set linesize 2
set numwidth 5

spool books.csv

SELECT
  title,
  primary_author
FROM
  books;

spool off

Om het script uit te voeren, gebruik je gewoon de @ symbool gevolgd door de bestandsnaam:

@file_name

Uw script moet worden uitgevoerd en de .csv bestand gemaakt zoals verwacht.


  1. De grootte van een kolom in SQL Server (T-SQL) wijzigen

  2. LOAD DATA INFILE equivalent in Oracle

  3. Kan een controlebeperking betrekking hebben op een andere tabel?

  4. Hoog ruimtegebruik van crfclust.bdb