Вход в личный кабинет
Регистрация пользователя
согласие на обработку персональных данных Политикой конфиденциальности

Личный кабинет

✖
Восстановление пароля

Укажите e-mail, на который будет выслан код восстановления пароля.

Подтверждение аккаунта

На указанный вами адрес e-mail был выслан код подтверждения аккаунта. Введите полученный код для продолжения:

Изменение пароля

Введите новый пароль два раза:


Postgres Pro
  • Компания
    • О компании
    • Руководство
    • Документы
    • Партнёры
    • Карьера
    • Контакты
  • Продукты
    • СУБД POSTGRES PRO ENTERPRISE
    • СУБД POSTGRES PRO ENTERPRISE CERTIFIED
    • СУБД POSTGRES PRO CERTIFIED
    • СУБД POSTGRES PRO STANDARD
    • Postgres Pro Enterprise Manager
    • Postgres Pro Backup Enterprise
    • Postgres Pro Shardman
    • СУБД PostgreSQL для Windows
    • План разработок
    • Совместимые решения
    • Лицензирование
  • Услуги
    • Техподдержка СУБД
    • Аудит СУБД
    • Миграция СУБД
    • Отказоустойчивость СУБД
    • Расширенная техническая поддержка
  • Клиенты
    • Кейсы
    • Отзывы
  • Образование
    • Книги
    • Курсы
      • Для DBA и разработчиков
      • Учебные центры
    • Сертификация
    • Вузам
      • Основы технологий баз данных
      • Язык SQL
    • Студентам
      • Программа стажировок
      • Конкурсы
    • Глоссарий
    • Демобаза
  • Новости
    • СМИ о нас
    • Дайджест Postgresso
    • Мероприятия
    • Технические анонсы
    • Для СМИ
  • Ресурсы
    • Документация
    • Материалы
    • How-to видео
    • Списки рассылки
    • PostgreSQL для Windows
  • RU
  • EN
  • ⋮
  • RU
  • EN
  • ⋮
Postgres Pro Shardman
17
Postgres Pro Shardman
17
Postgres Pro Shardman
17
dblink
Пред. НаверхF.4. dblink — подключение к другим базам данных Postgres ProНачало След.

dblink

dblink — выполняет запрос в удалённой базе данных

Синтаксис

dblink(text connname, text sql [, bool fail_on_error]) returns setof record
dblink(text connstr, text sql [, bool fail_on_error]) returns setof record
dblink(text sql [, bool fail_on_error]) returns setof record

Описание

dblink выполняет запрос (обычно SELECT, но это может быть и любой другой оператор SQL, возвращающий строки) в удалённой базе данных.

Когда этой функции передаются два аргумента типа text, первый сначала рассматривается как имя постоянного подключения; если такое подключение находится, команда выполняется для него. Если не находится, первый аргумент воспринимается как строка подключения, как для функции dblink_connect, и заданное подключение устанавливается только на время выполнения этой команды.

Аргументы

connname

Имя используемого подключения; опустите этот параметр, чтобы использовать безымянное подключение.

connstr

Строка подключения, описанная ранее для dblink_connect

sql

SQL-запрос, который вы хотите выполнить в удалённой базе данных, например select * from foo.

fail_on_error

Если равен true (это значение по умолчанию), в случае ошибки, выданной на удалённой стороне соединения, ошибка также выдаётся локально. Если равен false, удалённая ошибка выдаётся локально как ЗАМЕЧАНИЕ, и функция не возвращает строки.

Возвращаемое значение

Эта функция возвращает строки, выдаваемые в результате запроса. Так как dblink может выполнять произвольные запросы, она объявлена как возвращающая тип record, а не некоторый определённый набор столбцов. Это означает, что вы должны указать ожидаемый набор столбцов в вызывающем запросе — в противном случае Postgres Pro не будет знать, чего ожидать. Например:

SELECT *
    FROM dblink('dbname=mydb options=-csearch_path=',
                'select proname, prosrc from pg_proc')
      AS t1(proname name, prosrc text)
    WHERE proname LIKE 'bytea%';

В части «псевдонима» предложения FROM должны указываться имена столбцов и типы, которые будет возвращать функция. (Указание имён столбцов в псевдониме таблицы предусмотрено стандартом SQL, но определение типов столбцов является расширением Postgres Pro.) Это позволяет системе понять, во что должно разворачиваться обозначение *, и на что ссылается proname в предложении WHERE, прежде чем пытаться выполнять эту функцию. Во время выполнения произойдёт ошибка, если действительный результат запроса из удалённой базы данных не будет содержать столько столбцов, сколько указано в предложении FROM. Однако имена столбцов могут не совпадать, так же, как dblink не настаивает на точном совпадении типов. Функция завершится успешно, если возвращаемые строки данных будут допустимыми для ввода в тип столбца, объявленный в предложении FROM.

Примечания

Использовать dblink с предопределёнными запросами будет удобнее, если создать представление. Это позволит скрыть в его определении информацию о типах столбцов и не выписывать её в каждом запросе. Например:

CREATE VIEW myremote_pg_proc AS
  SELECT *
    FROM dblink('dbname=postgres options=-csearch_path=',
                'select proname, prosrc from pg_proc')
    AS t1(proname name, prosrc text);

SELECT * FROM myremote_pg_proc WHERE proname LIKE 'bytea%';

Примеры

SELECT * FROM dblink('dbname=postgres options=-csearch_path=',
                     'select proname, prosrc from pg_proc')
  AS t1(proname name, prosrc text) WHERE proname LIKE 'bytea%';
  proname   |   prosrc
------------+------------
 byteacat   | byteacat
 byteaeq    | byteaeq
 bytealt    | bytealt
 byteale    | byteale
 byteagt    | byteagt
 byteage    | byteage
 byteane    | byteane
 byteacmp   | byteacmp
 bytealike  | bytealike
 byteanlike | byteanlike
 byteain    | byteain
 byteaout   | byteaout
(12 rows)

SELECT dblink_connect('dbname=postgres options=-csearch_path=');
 dblink_connect
----------------
 OK
(1 row)

SELECT * FROM dblink('select proname, prosrc from pg_proc')
  AS t1(proname name, prosrc text) WHERE proname LIKE 'bytea%';
  proname   |   prosrc
------------+------------
 byteacat   | byteacat
 byteaeq    | byteaeq
 bytealt    | bytealt
 byteale    | byteale
 byteagt    | byteagt
 byteage    | byteage
 byteane    | byteane
 byteacmp   | byteacmp
 bytealike  | bytealike
 byteanlike | byteanlike
 byteain    | byteain
 byteaout   | byteaout
(12 rows)

SELECT dblink_connect('myconn', 'dbname=regression options=-csearch_path=');
 dblink_connect
----------------
 OK
(1 row)

SELECT * FROM dblink('myconn', 'select proname, prosrc from pg_proc')
  AS t1(proname name, prosrc text) WHERE proname LIKE 'bytea%';
  proname   |   prosrc
------------+------------
 bytearecv  | bytearecv
 byteasend  | byteasend
 byteale    | byteale
 byteagt    | byteagt
 byteage    | byteage
 byteane    | byteane
 byteacmp   | byteacmp
 bytealike  | bytealike
 byteanlike | byteanlike
 byteacat   | byteacat
 byteaeq    | byteaeq
 bytealt    | bytealt
 byteain    | byteain
 byteaout   | byteaout
(14 rows)

Пред. Наверх След.
dblink_disconnect Начало dblink_exec
Есть вопросы? Напишите нам!
✖
Postgres Pro
VK
Youtube

© Postgres Pro
Правовая информация
  • Продукты
    • Postgres Pro Standard
    • Postgres Pro Certified
    • Postgres Pro Enterprise
    • Postgres Pro Enterprise Certified
    • Postgres Pro Enterprise Manager
    • Postgres Pro Shardman
    • Postgres Pro для 1С
  • Образование
    • Документация
    • Учебные курсы
    • Книги
    • Сертификация специалистов
    • Курсы для вузов
    • Обучение PostgreSQL
    • Глоссарий
  • Услуги
    • Техподдержка СУБД
    • Миграция СУБД
    • Аудит СУБД
    • Отказоустойчивость СУБД
Write Close