Создайте базу данных Postgres, используя командный файл с [шаблоном], [кодировкой], [владельцем] и файлом .sql - PullRequest
4 голосов
/ 21 ноября 2011

Я хочу создать базу данных Postgres, используя командный файл. Теперь нормальный способ сделать это заключается в следующем:

"C: \ Program Files \ PostgreSQL \ 9.0 \ bin \ creationb.exe" -U Myadmin MydatAbseName

Этот скрипт выше создает базу данных с параметрами базы данных по умолчанию. Однако я хочу создать базу данных со следующими параметрами:

   WITH OWNER = Myadmin 
   TEMPLATE = template0 
   ENCODING = 'SQL_ASCII'
   TABLESPACE = pg_default
   LC_COLLATE = 'C'
   LC_CTYPE = 'C'
   CONNECTION LIMIT = -1;

Подскажите, пожалуйста, как создать базу данных с указанными выше параметрами, используя пакетные файлы.

Также дайте мне знать, как использовать файл .sql, чтобы сделать то же самое, как эта командная строка:

"C:\Program Files\PostgreSQL\9.0\bin\createdb.exe" -U Myadmin -f C:\createDB.sql;

1 Ответ

18 голосов
/ 21 ноября 2011

Клиентская программа createdb не поддерживает все эти опции.
Создать файл 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;

Назовите это:

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

Хитрость здесь в том, чтобы подключиться к базе данных обслуживания по умолчанию "postgres" и создать оттуда новую базу данных. Я делаю это с суперпользователем по умолчанию с именем "postgres" в моем примере.
psql -f выполняет команды SQL в данном файле.

Вы также можете просто выполнить одну команду с psql -c (файл не задействован):

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"

Подробнее о создании базы данных в прекрасном руководстве здесь и здесь .
Подробнее о psql .


В Windows это выглядит примерно так:

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

Последний "postgres" - это имя базы данных обслуживания по умолчанию. Если вы хотите использовать его в пакетном файле, вы должны ответить на запрос пароля или связаться с пользователем, которому разрешен доступ без предоставления пароля. Основы в главах Файл паролей и Файл pg_hba.conf руководства. Подробнее здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...