Solución:
Puede hacer “eliminar clúster” y “crear clúster” que borrará automáticamente todas las bases de datos. Borre todos los datos en su directorio $ PGDATA y reinicie el clúster usando:
initdb -D /usr/local/pgsql/data
Puedes usar:
$ pg_dropcluster 9.2 main
$ pg_createcluster 9.2 main
$ pg_ctlcluster 9.2 main start
$ pg_restore -f your_dump_file
dónde 9.2
= cluster version
y main
= cluster name
De acuerdo, la pregunta tiene 9 años en este momento, pero sigue siendo el segundo resultado de Google para eliminar todas las bases de datos. Si solo desea pasar de N DB a 0 sin manipular su configuración y también tener que hurgar en el sistema de archivos, esta es una respuesta mucho mejor:
https://stackoverflow.com/a/24548640/3499424
A partir de la respuesta, el siguiente script generará N drop database
comandos, uno para cada base de datos sin plantilla:
select 'drop database "'||datname||'";'
from pg_database
where datistemplate=false;
Desde allí, puede editar y ejecutar manualmente, o canalizar más adelante en un script. Aquí hay una frase un tanto detallada:
echo pset pager off copy (select 'drop database "'||datname||'";' from pg_database where datistemplate=false) to STDOUT; | psql -U <user> -d postgres | <appropriate grep> | psql -U <user> -d postgres
Explicación:
- Esta es una serie de tubos
-
echo pset pager off copy (select 'drop database "'||datname||'";' from pg_database where datistemplate=false) to STDOUT;
genera una cadena para que psql se ejecute-
pset pager off
se asegura de obtener todos los registros en lugar de esa basura (54 filas) -
copy (select 'drop database "'||datname||'";' from pg_database where datistemplate=false) to STDOUT;
ejecuta la consulta antes mencionada, enviando el resultado a STDOUT. Tenemos que hacer esto ya que lideramos conpset
.
-
-
| psql -U <user> -d postgres
canaliza dicha cadena a psql, que la ejecuta. Reemplazar<user>
con el usuario que desea utilizar -
| <appropriate grep>
es para eliminar la línea “El uso del buscapersonas está desactivado”- Los usuarios de Windows pueden usar
findstr /v "Pager"
ofindstr /b "drop"
- * los usuarios de nix pueden usar
grep 'drop'
- Los usuarios de Windows pueden usar
-
| psql -U <user> -d postgres
canaliza el conjunto resultante dedrop database
comandos en psql nuevamente, que los ejecuta, eliminando así todas las bases de datos - ADVERTENCIA: Sin ningún filtrado adicional, este voluntad también suelta el
postgres
base de datos. Puede quitarlo en elSELECT
o el grep si no quieres que eso suceda.