PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Crea un database Postgres utilizzando un file batch con [template], [encoding], [owner] e un file .sql

Il programma client createdb non supporta tutte queste opzioni.
Crea un file 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;

Chiamalo:

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

Il trucco qui è connettersi al db di manutenzione predefinito "postgres" e creare il nuovo database da lì. Lo faccio con il superutente predefinito chiamato "postgres" nel mio esempio.
psql -f esegue i comandi SQL nel file specificato.

Potresti anche eseguire un singolo comando con psql -c (nessun file coinvolto):

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"

Maggiori informazioni sulla creazione di un database nel manuale raffinato qui e qui .
Ulteriori informazioni su psql .

Su Windows, è simile a questo:

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

L'ultimo "postgres" è il nome del db di manutenzione predefinito. Se vuoi usarlo in un file batch devi rispondere a una richiesta di password o connetterti con un utente a cui è consentito l'accesso senza fornire una password. Nozioni di base nei capitoli Il file della password e Il file pg_hba.conf del manuale. Altro qui: