2015-05-26 15 views
5

Ho una query scritta in un file situato in/percorso/su/query. Come posso salvare il risultato di output in un file CSV, senza utilizzare COPY nella query? Ho provato il seguente comando, ma i campi del file di output sono separati da "|".Salvataggio dell'output di psql nel file csv

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' 

risposta

3

Non è spiegato nella documentazione, ma l'opzione -F richiede l'opzione di -A (output della tabella non allineati) per lavorare:

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A 

Se non si desidera che le intestazioni in csv, ciò significa che, senza righe aggiuntive in alto e in basso, utilizzare anche l'opzione -t.

psql -U username -d dbname -f /path/to/query -o /path/to/output/file -F ',' -A -t 

Dalla aiuto:

-A, --no-allineare modalità tabella unaligned uscita
-F, --field-separatore = STRING set separatore di campo (default: "| ")
-t, - solo righe di stampa solo file

+0

Funziona. Questo è un po 'pignolo, ma come faccio a sbarazzarmi di 2 linee extra: "SELECT " in alto e "(righe )" in basso? –

+0

Se si desidera solo tuple, senza altre righe in basso e in alto, utilizzare l'opzione -t: 'psql -U nome utente -d nome -db/percorso/su/query -o/percorso/su/output/file - F ',' -A -t'. –

+0

L'ho provato. Ho ancora visto "SELECT , anche se il conteggio delle righe in basso è scomparso. –

Problemi correlati