33 lines
965 B
PL/PgSQL
33 lines
965 B
PL/PgSQL
CREATE DATABASE prd-pointer;
|
|
\c prd-pointer
|
|
|
|
CREATE EXTENSION postgres_fdw;
|
|
|
|
CREATE SERVER dwh_prd
|
|
FOREIGN DATA WRAPPER postgres_fdw
|
|
OPTIONS (host '$PRD_HOST', dbname '$PRD_DB', port '$PRD_PORT');
|
|
|
|
CREATE USER MAPPING FOR current_user
|
|
SERVER dwh_prd
|
|
OPTIONS (user '$PRD_CI_USER', password '$PRD_CI_PASSWORD');
|
|
|
|
CREATE OR REPLACE FUNCTION refresh_foreign_schemas(schema_list TEXT[]) RETURNS void AS $$
|
|
DECLARE
|
|
schema_name TEXT;
|
|
BEGIN
|
|
-- Loop through each schema in the provided list
|
|
FOREACH schema_name IN ARRAY schema_list LOOP
|
|
|
|
-- Drop and recreate the schema to avoid conflicts
|
|
EXECUTE format('DROP SCHEMA IF EXISTS %I CASCADE', schema_name);
|
|
EXECUTE format('CREATE SCHEMA %I', schema_name);
|
|
|
|
-- Import all tables from the foreign server
|
|
EXECUTE format(
|
|
'IMPORT FOREIGN SCHEMA %I FROM SERVER dwh_prd INTO %I',
|
|
schema_name, schema_name
|
|
);
|
|
|
|
END LOOP;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|