У меня есть несколько баз данных на одном сервере PostgreSQL с одинаковыми таблицами с одинаковыми столбцами. Я хочу написать функцию, которую пользователь мог бы использовать для запроса по всем этим базам данных, что-то вроде:
SELECT * FROM all_databases();
На данный момент я только что нашел, как запросить другую базу данных:
-- 1. Get database names
SELECT datname
FROM pg_database
WHERE name LIKE '%someString%';
-- 2. Get data from different databases with postgres_fdw (same host or remote host)
-- 2.1. Install the module
CREATE EXTENSION postgres_fdw;
-- 2.2. Create a server connection
CREATE SERVER foreign_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'localhost', dbname 'foreignDbName', port '5432');
-- 2.3. Create user mapping for the foreign server
CREATE USER MAPPING FOR CURRENT_USER
SERVER foreign_db
OPTIONS (user 'postgres', password 'password');
-- 2.4. Import the foreign schema
IMPORT FOREIGN SCHEMA public
FROM SERVER foreign_db INTO public;
Итак, я хочу выполнить что-то наподобие того, что написано в 2 для каждого результата, возвращаемого 1. Похоже, мне придется использовать какой-то динамический SQL, но я немного растерялся ...