Как восстановить резервную копию в другой схеме pgAdmin - PullRequest
0 голосов
/ 04 апреля 2020

Я борюсь с базой данных postgis.

У меня есть резервная копия из схемы publi c. Я создал новую базу данных с расширением postgis. Теперь я могу восстановить данные в моей базе данных postgis, и это прекрасно работает. Я могу переименовать эту схему publi c в новую схему. Это тоже хорошо работает с:

ALTER SCHEMA public RENAME TO new_schema

Но теперь мне нужно сделать это в существующей базе данных. Таким образом, моя схема publi c содержит данные, которые могут быть скомпрометированы. Я попробовал базу данных fre sh, чтобы добиться цели с помощью ALTER SCHEMA. Итак, я импортировал его в пустую схему publi c, изменил его и экспортировал new_schema. Кажется, это работает, однако геометрия выдает ошибку, и данные не восстанавливаются.

Исходная геометрия: geom public.geomtery Изменяя схему, она изменяется на: geom new_schema.geomtery

При импорте я получил это сообщение об ошибке:

pg_restore: error: could not execute query: ERROR:  type "new_schema.geometry" does not exist

Я новичок в postgis и pgAdmin. Я могу изменить его вручную обратно на geom public.geometry. Но это кажется странным, и я думаю, что странно смешивать одну схему с другой?

Я нашел эту информацию ( Установка Postgis: тип "geometry" не существует ):

CREATE SCHEMA IF NOT EXISTS new_schema;

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

ALTER EXTENSION postgis 
  SET SCHEMA new_schema;

SET search_path TO new_schema;

Это также можно сделать в pgAdmin: RightMouse on Extensions (), выберите Definition и измените схему. Но тогда данные postgis только для new_schema?

Надеюсь, кто-нибудь может мне помочь; Я думаю, что упускаю что-то важное и не хочу испортить живую базу данных.

Будьте в безопасности и заранее спасибо.

1 Ответ

0 голосов
/ 17 апреля 2020

Хорошо. Теперь я знаю не для работы в схеме publi c, а для создания схемы для каждого проекта. Таким образом, данные не должны были быть в схеме publi c. Геометрия остается в схеме publi c и таким образом доступна для каждой схемы. Я переписал резервную копию sql для new_schema и оставил геометрию как geom publi c .geomtery. Я потерял некоторые первичные ключи, но переписал их (это только простой счетчик).

Так что я узнал немного больше.

...