Potenziare psql: Una guida essenziale ai meta-comandi di PostgreSQL
Impara i meta-comandi di psql che ti aiutano a ispezionare schemi, formattare l'output, cambiare database e lavorare più velocemente dal terminale.
Potenzia psql: Guida Essenziale ai Meta-Comandi di PostgreSQL
Quando lavori con PostgreSQL da un terminale, i meta-comandi di psql ti evitano di scrivere query di catalogo per controlli quotidiani. Questi comandi con barra rovesciata ti aiutano a elencare tabelle, descrivere oggetti, cambiare database, formattare l'output e ottenere aiuto senza uscire dalla sessione.
Questa guida copre i comandi psql che utilizzerai più spesso e mostra dove si inseriscono nel lavoro reale con il database.
Comprendere i Meta-Comandi di psql
I meta-comandi in psql sono direttive elaborate da psql stesso, anziché essere inviate al server PostgreSQL per l'esecuzione. Sono facilmente identificabili dal loro carattere iniziale di barra rovesciata (\). Questa distinzione è cruciale perché i meta-comandi hanno una propria sintassi e un proprio comportamento, separati dall'SQL standard.
Ad esempio, mentre potresti scrivere SELECT * FROM information_schema.tables; per elencare tutte le tabelle, un meta-comando di psql può ottenere lo stesso risultato con un semplice \dt.
Meta-Comandi Essenziali per l'Ispezione del Database
Ispezionare la struttura del tuo database è un'attività frequente. psql fornisce diversi meta-comandi per rendere questo processo semplice.
Elencare le Tabelle (\dt)
Il comando \dt è uno dei meta-comandi più utilizzati. Elenca tutte le tabelle nel database corrente, insieme al loro schema e proprietario.
Esempio:
\dtOutput:
List of relations Schema | Name | Type | Owner --------+------------+-------+---------- public | accounts | table | postgres public | products | table | postgres sales | orders | table | dbadmin (3 rows)Varianti:
\dt+: Fornisce informazioni più dettagliate, inclusi dimensione della tabella e descrizione.\dt schema.*: Elenca solo le tabelle in uno schema specifico.
Descrivere Tabelle e Colonne (\d)
Il comando \d è prezioso per comprendere la struttura di una tabella specifica, incluse le sue colonne, i tipi di dati, i vincoli e gli indici.
Esempio: Per descrivere la tabella
products:\d productsOutput:
Table "public.products" Column | Type | Collation | Nullable | Default ----------+-----------------------+-----------+----------+--------- product_id | integer | | not null | name | character varying(100)| | | price | numeric(10, 2) | | | Indexes: "products_pkey" PRIMARY KEY, btree (product_id)Varianti:
\d+ nome_tabella: Fornisce informazioni ancora più dettagliate, inclusi parametri di archiviazione e commenti.\dn: Elenca tutti gli schemi.\df: Elenca tutte le funzioni.\dv: Elenca tutte le viste.
Ispezionare le Viste (\dv)
Analogamente alle tabelle, puoi elencare e descrivere le viste.
Esempio (Elenca viste):
\dvEsempio (Descrivi una vista):
\dv my_view
Elencare gli Schemi (\dn)
Per vedere tutti gli schemi presenti nel tuo database, usa il comando \dn.
- Esempio:
\dn
Meta-Comandi per la Gestione delle Query e il Controllo dell'Output
psql offre potenti opzioni per controllare come vengono visualizzati i risultati delle query e per gestire la cronologia delle query.
Temporizzazione delle Query (\timing)
Il comando \timing attiva/disattiva la visualizzazione del tempo trascorso per ogni query SQL. È utile per confronti rapidi durante l'ottimizzazione di una query, anche se dovresti usare EXPLAIN (ANALYZE, BUFFERS) quando hai bisogno di un piano di esecuzione reale.
Esempio (Attiva temporizzazione):
\timing onOra, ogni query che esegui sarà seguita dal suo tempo di esecuzione.
Esempio (Disattiva temporizzazione):
\timing off
Formattazione dell'Output (\a, \H, \t)
\a: Alterna tra output allineato (tabella) e non allineato (simile a CSV). L'output non allineato è spesso più facile da analizzare a livello di programmazione.\a SELECT * FROM products;\H: Cambia il formato dell'output in HTML.\H SELECT * FROM products;\t: Attiva/disattiva la visualizzazione delle intestazioni delle colonne e dei piè di pagina con il conteggio delle righe. Utile quando vuoi un output più facile da reindirizzare a un altro comando.\t SELECT name, price FROM products;
Impaginazione (\pset pager)
Se i risultati della tua query sono lunghi, psql potrebbe utilizzare un impaginatore come less, a seconda dell'ambiente e delle impostazioni dell'impaginatore. Controlla questo comportamento con \pset pager.
Esempio (Usa l'impaginatore per output lunghi):
\pset pager onEsempio (Disabilita impaginatore):
\pset pager off
Meta-Comandi Amministrativi
Oltre all'ispezione e al controllo dell'output, psql fornisce comandi per attività amministrative comuni.
Elencare i Database (\l)
Per vedere tutti i database disponibili sul server PostgreSQL connesso, usa \l.
- Esempio:
\l
Connettersi a un Database Diverso (\c)
Se sei già connesso a una sessione psql e vuoi passare a un altro database, usa il comando \c.
- Esempio: Per connetterti al database
mydatabase:\c mydatabase
Eseguire \? per Aiuto
In caso di dubbio, psql fornisce il proprio sistema di aiuto. Il comando \? elenca tutti i meta-comandi disponibili, e \! ti permette di eseguire comandi shell.
Esempio (Elenca tutti i meta-comandi):
\?Esempio (Esegui un comando shell, ad esempio
ls):\! ls -l
Migliori Pratiche e Suggerimenti
- Usa alias di shell per comandi
psqlcompleti: Gli alias di shell non possono eseguire\dtall'interno di una sessionepsqlgià aperta, ma possono abbreviare i comandi di avvio comuni. Ad esempio,alias pprod='psql "postgresql://[email protected]/prod"'. - Combina con SQL: I meta-comandi non si escludono a vicenda con SQL. Puoi usarli per ispezionare rapidamente lo schema prima di scrivere un'istruzione
SELECTo usare\timingper confrontare i tempi di esecuzione delle query. - Comprendi l'Ambito: Ricorda che i meta-comandi operano nel contesto della tua sessione
psqle connessione corrente. Comandi come\ccambieranno il database attivo per quella sessione. - Usa
\?Generosamente: L'aiuto integrato è completo e un'ottima risorsa quando hai bisogno di ricordare un comando o scoprirne di nuovi.
Conclusione
Inizia con \dt, \d, \dn, \l, \c, \timing, \pset pager e \?. Quei pochi comandi coprono la maggior parte del lavoro di ispezione quotidiano e rendono psql molto meno simile a un prompt SQL grezzo.