Создание БД Экстры в PostgreSQL

Начальная БД для ПО «Экстра 8» поставляется в пяти файлах:

Создание БД и разворачивание схемы происходит путём запуска файла imp.cmd. Полный листинг imp.cmd

set PGPORT=5432 set pgpassword=postgres_password set myapp="C:\Program Files\PostgreSQL\17\bin\psql.exe" rem создаём БД %myapp% -U postgres -d postgres -q -f cre_database.sql rem создаём пользователя extra8 %myapp% -U postgres -d toshiba -q -f cre_user.sql rem создаем роли %myapp% -U postgres -d toshiba -q -f cre_main_roles.sql rem дамп базы данных %myapp% -U postgres -d toshiba -q -f extrapg_imp.sql

Перед тем, как это сделать, нужно произвести несколько действий. В самом файле imp.cmd нужно изменить строку

set PGPORT=5432

если в вашей базе данных используется порт доступа к PostgreSQL отличный от значения по умолчанию (5432)

В следующей строке следует указать пароль пользователя postgres. Из-под пользователя postgres будет создаваться БД для ПО Экстра 8.

set pgpassword=postgres_password

В параметре «myapp» нужно указать ссылку на утилиту psql с полным путем.

Изначально, имя базы данных это toshiba. Если требуется другое имя базы дан-ных, то нужно заменить слова toshiba в файлах imp.cmd, cre_database.sql и cre_user.sql.

Так как роли (пользователи) PostgreSQL не хранятся непосредственно в самой схеме, а являются общими для всех схем, чтобы разделить пользователей несколь-ких БД Экстра, пользователи создаются с префиксом равным имени базы данных и отделенного от имени пользователя символом решётка (#).

Например, если БД называется toshiba, то имя администратора это БД будет toshiba#extra8. Пароль пользователя toshiba#extra8 по умолчанию “none”. Если его нужно изменить при установке, то это можно сделать в файле cre_user.sql.

Содержимое cre_database.sql

CREATE DATABASE toshiba WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'Russian_Russia.1251' LC_CTYPE = 'Russian_Russia.1251' TABLESPACE = pg_default CONNECTION LIMIT = -1 IS_TEMPLATE = False;

Содержимое cre_main_roles.sql

create role extra8user; create role extra8admin; create role extra8tech; create role extra8econ; create role extra8oboz; create role extra8diag; create role extra8ehz; create role extra8corr; create role extra8him; create role extra8hydr; create role extra8dict; create role extra8ecol; create role extra8mech;

Содержимое cre_user.sql

create user "toshiba#extra8" login password 'none' SUPERUSER IN-HERIT CREATEDB CREATEROLE; grant extra8user to "toshiba#extra8" with admin option; -- роль-пустышка для идентификации администраторов grant extra8admin to "toshiba#extra8" with admin option; grant extra8tech to "toshiba#extra8" with admin option; grant extra8econ to "toshiba#extra8" with admin option; grant extra8oboz to "toshiba#extra8" with admin option; grant extra8diag to "toshiba#extra8" with admin option; grant extra8ehz to "toshiba#extra8" with admin option; grant extra8corr to "toshiba#extra8" with admin option; grant extra8him to "toshiba#extra8" with admin option; grant extra8hydr to "toshiba#extra8" with admin option; grant extra8dict to "toshiba#extra8" with admin option; grant extra8ecol to "toshiba#extra8" with admin option; grant extra8mech to "toshiba#extra8" with admin option;