Как я могу скопировать мою public
схему в ту же базу данных с полной структурой таблицы, данными, функциями, fk, pk и т. Д.
Моя версия Postgres - 8.4
PS Мне нужно скопировать схему, а не базу данных.
postgresql
SIGRA
источник
источник
public
?Ответы:
Нет простого способа сделать это в самой pg_dump / pg_restore. Вы можете попробовать следующее, если вы можете временно удалить базу данных.
источник
pg_dump -n my_schema -f '/path/to/file.pgsql' my_db
. Проще всего как superuser (postgres
) сpeer
авторизацией без pw вpg_haba.conf
. Восстановление после переименования оригинальной схемы:psql my_db -f '/path/to/file.pgsql'
. Если у вас простой дамп SQL, он вам не нуженpg_restore
.Если вы застряли с php, используйте тики
или команда exec (). Для изменения вы можете использовать sed таким же образом.
Вот еще 6 символов
источник
public
).С помощью pgAdmin вы можете сделать следующее. Это довольно руководство, но может быть все, что вам нужно. Подход на основе сценариев был бы гораздо более желательным. Не уверен, насколько хорошо это будет работать, если у вас нет прав администратора, и если ваша база данных велика, но она должна прекрасно работать с базой данных разработки, которая у вас есть только на вашем локальном компьютере.
Щелкните правой кнопкой мыши имя схемы, которую вы хотите скопировать, и выберите Резервное копирование. (Вы можете пойти глубже, чем это и выбрать просто сделать резервную копию структуры вместо обоих).
Дайте файлу резервной копии имя, а также выберите формат. (Я обычно использую Tar.)
Нажмите Резервное копирование.
Щелкните правой кнопкой мыши схему, из которой вы создали резервную копию, выберите свойства и временно переименуйте ее во что-нибудь другое. (например, temprename )
Щелкните корневой каталог схем и щелкните его правой кнопкой мыши в браузере объектов, затем нажмите « Создать новую схему» и присвойте этой схеме имя public . Это будет схема, в которую вы копируете свою резервную копию.
Щелкните правой кнопкой мыши на новой общедоступной схеме, начиная с шага 5., и нажмите "Восстановить" Восстановите файл резервной копии на шаге 3.
Переименуйте новую публичную схему под другим именем (например, newschema ).
Переименуйте схему с изменением временного имени с шага 4 обратно на исходное имя.
источник
Вы могли бы использовать
Затем отбросьте все схемы, которые вам не нужны:
Единственный недостаток - все подключения к old_db должны быть определены до того, как вы сможете создать копию (поэтому процесс, выполняющий
CREATE DATABASE
инструкцию, должен подключаться, например, к template1)Если это не вариант, pg_dump / pg_restore - единственный способ сделать это.
источник
в продолжение ответа user1113185 , вот полный рабочий процесс с использованием psql / pg_dump.
Следующее экспортирует все объекты
old_schema
и импортирует их в новуюnew_schema
схему, какuser
вdbname
базе данных:источник