sql >> Base de Datos >  >> RDS >> PostgreSQL

Cree una base de datos de Postgres utilizando un archivo por lotes con [plantilla], [codificación], [propietario] y un archivo .sql

El programa cliente createdb no admite todas esas opciones.
Cree un archivo db_create.sql :

CREATE DATABASE MydatAbseName
   WITH OWNER myadmin 
   TEMPLATE template0
   ENCODING 'SQL_ASCII'
   TABLESPACE  pg_default
   LC_COLLATE  'C'
   LC_CTYPE  'C'
   CONNECTION LIMIT  -1;

Llámalo:

psql -U postgres postgres -f C:/path/to/db_create.sql

El truco aquí es conectarse a la base de datos de mantenimiento predeterminada "postgres" y cree la nueva base de datos desde allí. Lo hago con el superusuario predeterminado llamado "postgres" en mi ejemplo.
psql -f ejecuta los comandos SQL en el archivo dado.

También podría simplemente ejecutar un solo comando con psql -c (sin archivo involucrado):

psql -U postgres postgres -c "CREATE DATABASE MydatAbseName WITH OWNER Myadmin
EMPLATE template ENCODING 'SQL_ASCII' TABLESPACE  pg_default LC_COLLATE  'C'
LC_CTYPE  C' CONNECTION LIMIT  -1"

Más información sobre cómo crear una base de datos en el excelente manual aquí y aquí .
Más información sobre psql .

En Windows, se parece a esto:

"C:\Program Files\PostgreSQL\verson_number\bin\psql.exe" -U user -f C:/path/to/db_create.sql postgres

El último "postgres" es el nombre de la base de datos de mantenimiento predeterminada. Si desea utilizarlo en un archivo por lotes, debe responder a una solicitud de contraseña o conectarse con un usuario al que se le permita el acceso sin proporcionar una contraseña. Conceptos básicos en los capítulos El archivo de contraseñas y El archivo pg_hba.conf del manual Más aquí: