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

Come scrivere in un file CSV utilizzando Oracle SQL*Plus

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) è uno strumento interattivo che viene installato con ogni moderna installazione di Oracle. SQL Inoltre, ti consente di andare oltre le query standard del database con batch, script e calcoli oltre il normale ambito di Oracle.

È anche possibile, come esploreremo di seguito, generare file di testo, come .csv , utilizzando l'output di una particolare query di database.

Avvio di SQL*Plus

A seconda della tua installazione Oracle, potresti avere accesso a una delle tante versioni o "modalità" diverse in cui eseguire l'applicazione SQL*Plus.

Riga di comando SQL*Plus

Se desideri utilizzare SQL*Plus Command-line , rilascerai semplicemente il sqlplus comando dalla tua shell:

$ sqlplus

Questo tenterà di connetterti al predefinito database e ti verrà chiesto di inserire le tue credenziali per autenticarti.

Nel caso sia necessario collegarsi a un database diverso oppure usa un diverso user (schema ), prova quanto segue, sostituendo i tuoi valori se necessario:

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

iSQL*Plus

Se hai accesso ad esso, potresti voler utilizzare iSQL*Plus , che è una versione basata su browser dello strumento da riga di comando SQL*Plus.

Ciò si ottiene semplicemente visitando l'iSQL*Plus URL per il database e l'installazione. L'URL esatto varia, ma in genere è nel seguente formato:http://machine_name.domain:port/isqlplus

SQL*Plus per Windows

Se utilizzi Windows, è disponibile anche una versione della GUI di Windows di SQL*Plus, che in genere può essere avviata dal menu di avvio:Start > Programs > Oracle > Application Development > SQL Plus .

Emissione di una query in un file

Ora che sei connesso a SQL*Plus possiamo iniziare a creare il nostro file.

Modifica configurazione SQL*Plus

Il primo passaggio consiste nel configurare alcune impostazioni di sistema SQL*PLus utilizzando il SET dichiarazione.

Per questo esempio, modificheremo manualmente queste impostazioni una volta prima della nostra query e generazione di file, ma se lo desideri, puoi modificare le impostazioni predefinite di varie impostazioni nel tuo User Profile , che si trova in login.sql file.

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

Le prime impostazioni in genere non vorrai modificare, ma spiegheremo brevemente cosa realizza ciascuna.

  • colsep è il carattere separatore utilizzato per dividere le colonne. Per un .csv file, questa è una semplice virgola.
  • headsep è il carattere separatore per la riga di intestazione (se necessario). In questo esempio non stiamo generando la riga di intestazione, quindi lasceremo questo off .
  • pagesize è il numero di righe "per pagina". Si tratta di un'impostazione leggermente arcaica destinata alla stampa senza troppe righe per pagina. Con un valore di 0 , non utilizziamo le pagine poiché stiamo eseguendo l'output su un file. Se scegli di mostrare l'header riga, imposta pagesize a un numero molto elevato (maggiore del numero previsto di risultati di record nella query), quindi la riga di intestazione verrà visualizzata solo una volta anziché una volta "per pagina".
  • trimspool impostato su on rimuove semplicemente lo spazio bianco finale.

Ora le ultime due impostazioni dovranno essere modificate a seconda della tua richiesta.

set linesize #
set numwidth #
  • Per linesize , il # value dovrebbe essere il numero totale di colonne di output nella query risultante.
  • numwidth è la larghezza della colonna (numero di spazi di caratteri) utilizzata durante l'output di valori numerici.

Comando SPOOL

Nota:il SPOOL il comando non è disponibile nella versione SQL*Plus basata su browser, iSQL*Plus . Per generare file durante l'utilizzo di iSQL*Plus, modificare le impostazioni delle preferenze necessarie per l'output diretto su un file.

Con le nostre impostazioni curate, ora dobbiamo dire a SQL*Plus di generare un file. Questo si ottiene usando SPOOL dichiarazione.

Mentre SPOOL è attivo , SQL*PLus memorizzerà l'output di qualsiasi query nel file specificato.

Pertanto, il prossimo comando da inserire è spool :

spool file_path

Saltando leggermente in avanti, dopo la tua richiesta è inserita, devi anche fermare spool quindi l'output del file viene chiuso utilizzando spool off comando:

spool off

Inserisci la query

L'ultimo passaggio dopo la modifica delle impostazioni e lo spool è in esecuzione è inserire la tua query. Per il nostro semplice esempio, stiamo generando tutti i libri dai nostri books tabella.

SELECT
  title,
  primary_author
FROM
  books;

Non dimenticare il punto e virgola per chiudere la tua dichiarazione di query, quindi inserisci il summenzionato spool off comando.

Ecco fatto, hai generato un nuovo file di testo con i risultati della tua query utilizzando SQL*Plus.

Suggerimento:utilizzo di un file di script

Invece di inserire manualmente ogni riga, si suggerisce di inserire tutte le impostazioni in un nuovo file di script che puoi eseguire in SQL*Plus con un unico comando.

Crea un nuovo file di script con EDIT dichiarazione:

EDIT file_name

Ora incolla l'intero elenco di comandi di script nel tuo nuovo file e salva. Il contenuto completo del nostro script di esempio può essere trovato di seguito.

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

Per eseguire lo script, usa semplicemente il @ simbolo seguito dal nome del file:

@file_name

Il tuo script dovrebbe essere eseguito e il .csv file creato come previsto.