DBlink Postgres

Thank you for reading this post, don't forget to subscribe!

Вни­ма­ние!! Выпол­ня­ем дей­ствия из под поль­зо­ва­те­ля postgres и в нуж­ной БД от кото­рой будут запросы

Psql

\c test24_coins; ## конек­тим­ся к нуж­ной БД от кото­рой будут запросы

 

  1. CREATE EXTENSION dblink SCHEMA public;  # Уста­но­ви­те рас­ши­ре­ние DbLink
  2. Про­вер­ка дблинка:
    SELECT pg_namespace.nspname, pg_proc.proname
    FROM pg_proc, pg_namespace
    WHERE pg_proc.pronamespace=pg_namespace.oid
    AND pg_proc.proname LIKE '%dblink%';
  3. SELECT dblink_connect('host=100.230.144.11 user=devel password=пароль dbname=test24_tasks');
  4. CREATE FOREIGN DATA WRAPPER dbrnd VALIDATOR postgresql_fdw_validator;

CREATE SERVER test24_tasks_dblink FOREIGN DATA WRAPPER dbrnd OPTIONS (hostaddr '100.230.144.11', dbname 'test24_tasks');

CREATE USER MAPPING FOR devel SERVER test24_tasks_dblink OPTIONS (user 'devel', password 'пароль');

  1. Выда­ем гранты
    GRANT USAGE ON FOREIGN SERVER test24_tasks_dblink TO devel;
  2. Про­ве­ря­ем уже из под поль­зо­ва­те­ля devel и из базы test24_coins

psql -U devel -d test24_coins

 

SELECT dblink_connect('test24_tasks_dblink');  # тут долж­но быть ОК

 

И тестим селек­та­ми что пра­ва и линк есть:

 

SELECT * FROM public.dblink('test24_tasks_dblink','select user_id from public.users') AS DATA(user_id INTEGER);

 

 

Если необ­хо­дим доступ еще до одной базы то созда­ем отдель­ный DBLink с новым назва­ни­ем (напри­мер test24_warehouse_dblink)