Перенос структуры БД

Allvin
Дата: 27.08.2003 17:08:27
Как можно сгенерировать скрипт, который создает все таблици (функций, ....) из одной БД. Ну что б потом выполнить его на другой БД и получить аналогичную структуру БД .......
Sad Spirit
Дата: 28.08.2003 00:18:46

pg_dump -s одна_БД > schema.sql
Vel
Дата: 28.08.2003 09:58:14
Если ты переносишь на разные сервера, то убедись, что там уже созданы юзеры и группы, которые были на твоем сервере. Или создай сам.
Allvin
Дата: 28.08.2003 16:20:14
спасибо
assa
Дата: 29.10.2003 19:28:01
2Vel

переносятся ли юзеры дампом? или надо шаманить? Че-то на вскидку не вижу в букваре. (7.0 -> 7.3, ругань на неверный архив, ищу причины)
Vel
Дата: 29.10.2003 19:49:21
Нет, юзверей нужно создавать руками.

Что значит ругань на архив. Приведи эту ругань, мож понятнее будет
Konrad
Дата: 30.10.2003 08:19:37
pg_dumpall переносит все, в т.ч. и юзеров с группами.
assa
Дата: 30.10.2003 11:07:50
2VEL вроде проясняется: начал прогонять SQL дампа кусками (в pgAdmin). Таблички создаются. А вот с функциями облом. Ругается на разные места, в основном - касательно преобразования типов. Или отсутствие функций. Например:
ERROR:  Function round(double precision, integer) does not exist

Unable to identify a function that satisfies the given argument types
You may need to add explicit typecasts

Лечу вставкой кастов. Наверное - неоптимально. И надо бы придумать некий стандартный метод. С тем, чтобы окончательный переход (в нужный момент) можно было проделать, как и положено, подъемом дампа, разве что отрихтованного массовой заменой каких-либо предложений, или вставкой каких-то предложений в начало дампа, скажем описывающих некое преобразование типов, для того, чтобы ф-ии проскочили. Пока не решил. Если есть идеи/наработки - приму с благодарностью.

...А ругань - со слов админа - "бед архив". Первым предположение было: - изменился формат дампа (версионное разхождение).

____
2 Konrad. Возможно. Я не админ. (ни одного из 2-х). Со слов - следущее : "сделан дамполл". Я его просматриваю: - нигде "криэйт юзеров" нет. есть только "/коннект - юзер". Т.ч. тут вряд ли _создаются_ юзеры.
assa
Дата: 30.10.2003 11:58:28
Продолжаю прогонку дампа по частям:

1. предложения CREATE UNIQUE INDEX - все отработали результативно.
2. -//_ CREATE RULE (- создание видов, в моем случае) - тоже.
3. а вот с CREATE CONSTRAINT TRIGGER какая-то лажа: Запускай хоть до посинения. Запрос отрабатывает успешно. Ошибок нет. Но и ни одного триггера не вижу. (в диалекте 7.0 НЕТ "OR REPLACE", а ошибки с повторным запуском тем не менее также не возникает). В чем собака порылась?


Ага, кажется понял: в 7.0 предложения вида
ALTER TABLE ххх
ADD CONSTRAINT ххх
[FOREIGN KEY|REFERENCES]

отражаются в дампе как набор CREATE CONSTRAINT TRIGGER
а в 7.3, похоже, именно так, как написаны. Т.е. подьему дампа они (CREATE CONSTRAINT TRIGGER) мешать не должны, а просто (запущеные в SQL строке) не вызывают НИКАКИХ изменений.
Т.ч. и тут, похоже, придется руками ставить связи после залики данных. Есть ли другие возможности?
Konrad
Дата: 30.10.2003 12:00:53
Возможно. Я не админ. (ни одного из 2-х). Со слов - следущее : "сделан дамполл". Я его просматриваю: - нигде "криэйт юзеров" нет. есть только "/коннект - юзер". Т.ч. тут вряд ли _создаются_ юзеры.

Обманывает вас админ :) Или лукавит..
pg_dumpall extracts a PostgreSQL database cluster into an SQL script file.

В числе опций:
-g, --globals-only Only dump global objects, no databases

Ненавязчиво поинтересуйтесь у него, что такое "global objects", и что в них входит.. :)

Впрочем, и без опции -g dumpall по умолчанию выкладывает в скрипт команды CREATE USER и CREATE GROUP.