Create Postgres database using batch file with [template],[encoding],[owner] and a .sql file

前端 未结 1 1860
囚心锁ツ
囚心锁ツ 2021-02-10 12:03

I want to create a Postgres database using a batch file. Now the normal way of doing this is the following:

\"C:\\Program Files\\PostgreSQL\\9.0\\bin\\createdb.exe\" -U

1条回答
  •  难免孤独
    2021-02-10 12:08

    The client program createdb does not support all those options.
    Create a 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;
    

    Call it:

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

    The trick here is to connect to the default maintenance db "postgres" and create the new database from there. I do it with the default superuser named "postgres" in my example.
    psql -f executes the SQL commands in the given file.

    You could also just execute a single command with psql -c (no file involved):

    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"
    

    More on creating a database in the fine manual here and here.
    More on psql.


    On Windows, it looks something like this:

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

    The last "postgres" is the name of the default maintenance db. If you want to use it in a batch file you have to answer a password prompt or connect with a user that is allowed access without providing a password. Basics in chapters The Password File and The pg_hba.conf File of the manual. More here:

    • Run batch file with psql command without password

    0 讨论(0)
提交回复
热议问题