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

Sådan skriver du til en CSV-fil ved hjælp af Oracle SQL*Plus

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) er et interaktivt værktøj, der kommer installeret med enhver moderne Oracle-installation. SQL Plus giver dig mulighed for at gå ud over standarddatabaseforespørgsler med batches, scripts og beregninger ud over det normale anvendelsesområde for Oracle.

Det er endda muligt, som vi vil udforske nedenfor – at generere tekstfiler, såsom .csv , ved at bruge outputtet fra en bestemt databaseforespørgsel.

Lancering af SQL*Plus

Afhængigt af din Oracle-installation kan du have adgang til en af ​​mange forskellige versioner eller "tilstande", hvor du kan køre SQL*Plus-applikationen.

SQL*Plus kommandolinje

Hvis du ønsker at bruge SQL*Plus Command-line , skal du blot udstede sqlplus kommando fra din shell:

$ sqlplus

Dette vil forsøge at forbinde dig til standarden database, og du bliver bedt om at indtaste dine legitimationsoplysninger for at autentificere dig selv.

I tilfælde af at du skal oprette forbindelse til en anden database eller brug en anden user (schema ), prøv følgende, og udskift dine egne værdier efter behov:

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

iSQL*Plus

Hvis du har adgang til det, kan du bruge iSQL*Plus , som er en browserbaseret version af kommandolinjeværktøjet SQL*Plus.

Dette opnås ved blot at besøge iSQL*Plus URL til din database og installation. Den nøjagtige URL vil variere, men den er typisk i følgende format:http://machine_name.domain:port/isqlplus

SQL*Plus til Windows

Hvis du bruger Windows, er der også en Windows GUI-version af SQL*Plus, som typisk kan startes fra din startmenu:Start > Programs > Oracle > Application Development > SQL Plus .

Udlæsning af en forespørgsel til en fil

Nu hvor du er forbundet til SQL*Plus, kan vi begynde at oprette vores fil.

Rediger SQL*Plus-konfiguration

Det første trin er at konfigurere nogle SQL*PLus-systemindstillinger ved hjælp af SET erklæring.

For dette eksempel vil vi manuelt ændre disse indstillinger én gang før vores forespørgsel og filgenerering, men hvis det ønskes, kan du ændre standardindstillingerne for forskellige indstillinger i din User Profile , placeret i login.sql fil.

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

De første par indstillinger vil du typisk ikke ændre, men vi vil kort forklare, hvad hver enkelt udretter.

  • colsep er skilletegn, der bruges til at opdele dine kolonner. For en .csv fil, er dette et simpelt komma.
  • headsep er skilletegn for overskriftsrækken (hvis du har brug for en). I dette eksempel udsender vi ikke overskriftsrækken, så vi lader denne off .
  • pagesize er antallet af linjer "pr. side". Dette er en lidt arkaisk indstilling, der er beregnet til udskrivning uden at have for mange linjer pr. side. Med en værdi på 0 , vi bruger ikke sider, da vi udsender til en fil. Hvis du vælger at vise header række, indstil pagesize til et meget stort antal (større end det forventede antal postresultater i forespørgslen), så din overskriftsrække vises kun én gang i stedet for én gang "pr. side."
  • trimspool indstillet til on fjerner blot efterstillede mellemrum.

Nu skal de sidste to indstillinger ændres afhængigt af din forespørgsel.

set linesize #
set numwidth #
  • For linesize , # værdi skal være det samlede antal outputkolonner i din resulterende forespørgsel.
  • numwidth er kolonnebredden (antal tegnmellemrum), der bruges ved udlæsning af numeriske værdier.

SPOOL-kommando

Bemærk:SPOOL kommandoen er ikke tilgængelig i den browserbaserede SQL*Plus-version, iSQL*Plus . For at generere filer, mens du bruger iSQL*Plus, skal du ændre de nødvendige præferenceindstillinger til direkte output til en fil.

Med vores indstillinger taget hånd om, skal vi nu bede SQL*Plus om at udskrive en fil. Dette opnås ved hjælp af SPOOL erklæring.

Mens SPOOL er aktiv , vil SQL*PLus gemme output fra enhver forespørgsel til den angivne fil.

Derfor er den næste kommando, der skal indtastes, spool :

spool file_path

Springer lidt frem efter din forespørgsel er indsat, skal du også stoppe spool så filoutputtet lukkes ved at bruge spool off kommando:

spool off

Indsæt forespørgslen

Det sidste trin efter indstillingerne er ændret og spool kører, er at indsætte din forespørgsel. For vores simple eksempel udskriver vi alle bøger fra vores books tabel.

SELECT
  title,
  primary_author
FROM
  books;

Glem ikke semikolon for at lukke din forespørgselserklæring, og indtast derefter den førnævnte spool off kommando.

Det er det, du har genereret en ny tekstfil med resultaterne af din forespørgsel ved hjælp af SQL*Plus.

Tip:Brug af en scriptfil

I stedet for manuelt at indtaste hver linje, foreslås det at indtaste alle indstillingerne i en ny scriptfil, som du kan udføre i SQL*Plus i en enkelt kommando.

Opret en ny scriptfil med EDIT erklæring:

EDIT file_name

Indsæt nu hele scriptkommandolisten i din nye fil og gem. Det fulde indhold af vores eksempelscript kan findes nedenfor.

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

For at udføre scriptet skal du blot bruge @ symbol efterfulgt af filnavnet:

@file_name

Dit script skal udføres og .csv fil oprettet som forventet.


  1. VÆLG eller INDSÆT en række i én kommando

  2. Hvordan ændrer man en kolonne og ændrer standardværdien?

  3. Sådan overføres XML som parameter til Stored Procedure i Oracle

  4. NLS_CHARSET_ID() Funktion i Oracle