Introduzione
PostgreSQL offre due metodi da riga di comando per eliminare un database:utilizzando DROP DATABASE
istruzione o un'utilità della shell.
La rimozione dei database inutilizzati è una buona pratica e aiuta a mantenere pulito lo spazio di lavoro. Tuttavia, tieni presente che l'eliminazione di un database PostgreSQL esistente rimuove tutte le voci di catalogo e i dati per quel database.
Continua a leggere per scoprire come eliminare un database in PostgreSQL.
Prerequisiti
- PostgreSQL 10 o superiore installato e configurato (segui la nostra guida per Ubuntu o Windows; se già installato, controlla la versione di PostgreSQL sul sistema).
- Accesso al terminale con privilegi sudo.
Dichiarazione DROP DATABASE
Importante :SOLO il proprietario del database può eliminare un database.
Il primo metodo per rimuovere un database PostgreSQL è utilizzare la seguente istruzione SQL:
DROP DATABASE <database name>;
Il comando rimuove la directory contenente le informazioni sul database e le voci del catalogo. Solo il proprietario del database può eseguire il DROP DATABASE
comando. Se qualcuno sta attualmente utilizzando il database, il comando non viene eseguito.
Per vedere come DROP DATABASE
funziona, procedi come segue:
1. Apri il terminale (CTRL +ALT +T ).
2. Connettiti a PostgreSQL:
sudo -i -u postgres psql
3. Crea un database per l'esempio:
CREATE DATABASE example;
Il terminale stampa l'istruzione eseguita.
4. Elenca tutti i database con:
\l
Il database del passaggio precedente viene visualizzato nell'elenco.
5. Rilascia il database con:
DROP DATABASE example;
L'output mostra l'istruzione eseguita.
6. Elenca di nuovo tutti i database:
\l
Il database di esempio non compare più nell'elenco.
SE Esiste
Il IF EXISTS
l'opzione è aperta per tutte le versioni in cui DROP DATABASE
è disponibile. La sintassi completa del comando con IF EXISTS
l'opzione è la seguente:
DROP DATABASE IF EXISTS <database name>;
L'opzione controlla se esiste un database prima di eliminarlo. Se esiste un database, il comando elimina il database. Tuttavia, se non esiste un database, il comando stampa un messaggio di avviso informativo.
Per testare il funzionamento del comando, procedi nel seguente modo:
1. Crea un database di esempio:
CREATE DATABASE example;
2. Eliminare il database utilizzando il IF EXISTS
opzione:
DROP DATABASE IF EXISTS example;
Il risultato è identico all'utilizzo di DROP DATABASE
se il database esiste.
3. Il database non è più disponibile. Riesegui il comando per vedere l'output:
DROP DATABASE IF EXISTS example;
Viene stampato un messaggio di avviso che informa che il database non esiste.
4. Per vedere la differenza tra l'utilizzo di IF EXISTS
e omettendo l'opzione, esegui il seguente comando:
DROP DATABASE example;
Utilizzando DROP DATABASE
senza il IF EXISTS
opzione su un database inesistente genera un messaggio di errore.
CON (FORZA)
Il WITH (FORCE)
l'opzione è disponibile in PostgreSQL versione 13 e successive.
Il DROP DATABASE
il metodo non rimuoverà il database se è in uso. Se il database è in uso, il terminale stampa un errore che indica che una sessione del database è aperta.
Aggiungi il WITH (FORCE)
opzione per chiudere forzatamente la sessione ed eliminare il database:
DROP DATABASE <database name> WITH (FORCE);
Se possibile, Postgres chiude la sessione dell'utente ed elimina forzatamente il database.
L'utilità dropdb
L'utilità della shell dropdb è un wrapper per il DROP DATABASE
comando. In effetti, i due metodi sono identici. Tuttavia, dropdb offre opzioni aggiuntive inclusa la rimozione dei database da remoto.
La sintassi di base è:
dropdb <connection parameters> <options> <database name>
Opzioni
La tabella seguente mostra tutte le opzioni possibili quando si utilizza l'utilità dropdb.
Opzione | Digita | Descrizione |
---|---|---|
-e --echo | Opzione | Stampa i comandi che dropdb invia al server. |
-f --force | Opzione | Tenta di terminare tutte le connessioni correnti prima di eliminare il database. |
-i --interactive | Opzione | Richiede la verifica prima di eseguire l'eliminazione del database. |
-V --version | Opzione | La console stampa la versione dell'utilità. |
--if-exists | Opzione | Stampa un avviso invece di un errore se il database non esiste. |
-? --help | Opzione | Mostra il menu di aiuto. |
-h <host> --host=<host> | Parametro di connessione | Specifica il nome host della macchina su cui è in esecuzione il server. |
-p <port> --port=<port> | Parametro di connessione | Specifica la porta TCP su cui è in ascolto il server. |
-U <username> --username <username> | Parametro di connessione | Connetti come utente specificato. |
-w --no-password | Parametro di connessione | Non inviare mai la richiesta della password. Utile per lavori batch e script quando nessun utente è presente. |
-W --password | Parametro di connessione | Forza richiesta password. Senza l'opzione, il server perde il tentativo di connessione se è necessaria una password. |
--maintenance-db=<database name> | Parametro di connessione | L'opzione specifica la connessione del nome del database. |
Ad esempio, prova il comando seguente per vedere come funziona dropdb con -i
e -e
opzioni:
dropdb -i -e example
Il programma chiede conferma prima dell'eliminazione a causa del -i
tag.
Premi y per confermare. Il programma stampa i comandi generati sul server. Poiché il database non esiste, il programma genera un errore ed esce.