CREATE EXTENSION IF NOT EXISTS postgres_fdw; GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO dbo; SET ROLE dbo; DROP SCHEMA IF EXISTS vmreports CASCADE; CREATE SCHEMA IF NOT EXISTS vmreports AUTHORIZATION dbo; GRANT USAGE ON SCHEMA vmreports TO nifi,analytics,analyst; ALTER DEFAULT PRIVILEGES FOR ROLE dbo IN SCHEMA vmreports GRANT SELECT ON TABLES TO nifi,analytics,analyst; -- это работает и для внешних таблиц --ALTER DEFAULT PRIVILEGES FOR ROLE dbo IN SCHEMA vmreports GRANT USAGE ON SEQUENCES TO nifi,analytics,analyst; /* конструкция осложняется тем, что нужен один пользователь-владелец и второй читатель Это вызывает множество телодвижений при создании. Необходимость указывать пароль при локальном коннекте не очень радует (ведь пользователь локальный, прописан на этом же сервере) */ DROP SERVER IF EXISTS billing CASCADE; CREATE SERVER billing FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'localhost', port '5432', dbname 'billing', updatable 'false'); DROP USER MAPPING IF EXISTS FOR PUBLIC SERVER billing; CREATE USER MAPPING FOR PUBLIC SERVER billing OPTIONS (user 'nifi', password '***'); IMPORT FOREIGN SCHEMA vmreports FROM SERVER billing INTO vmreports; --select * from vmreports.host; /* план миграции Забекапить схему vmreports Восстановить схему vmreports в базу биллинг Поменять целевую базу импорта НиФи (для прода - втащить новый обмен из репозитория) Выполнить скрипт в базе DWH - он удалит физические таблицы и создаст внешние таблицы на базу billing */