2015-04-12 14 views
5

Sono un po 'confuso alcune volte quando si lavora con psql tra quando utilizzare un set rispetto a \set rispetto a \pset. Penso che:Differenza tra set, set e pset in psql

  • set è per le variabili di sessione sulla mia connessione al db. Ad esempio SET ROLE dba;
  • \set è per le variabili locali per questa sessione psql. Ad esempio \set time 'select current_timestamp'
  • \pset è per le impostazioni di psql per questa sessione di psql. Per esempio '\pset border 2'

Ma, non ho mai trovato quello che pensavo fosse una buona spiegazione di ciascuno. Le mie supposizioni sono corrette?

sto usando PostgreSQL 9.4

+0

'set' è un comando SQL e può essere utilizzato da qualsiasi client SQL. '\ set' e' \ pset' possono essere usati solo con 'psql' –

+2

È spiacevole che' \ set' non sia stato chiamato '\ varset' o qualcosa del genere. –

risposta

8

fondamentalmente corretto. La differenza importante è che SET è un comando SQL mentre gli altri due sono meta-comandi psql, indicati dal prefisso \.

  • SET è un comando SQL per modificare i parametri di runtime. Viene eseguito sul server e non ha nulla a che fare con psql di per sé.

  • \set è un meta-comando di psql e, per documentation:

    Imposta il nome della variabile psql al valore di [...]

    Nota: Questo comando non è correlato al comando SQL SET.

  • \pset è un altro meta-comando psql. Per documentation:

    Questo set di comandi opzioni che influiscono sulla stampa di interrogazione tabelle dei risultati

Problemi correlati