Подтвердить что ты не робот

Как использовать (установить) dblink в PostgreSQL?

Я использую Oracle и создаю dblink в своей схеме, а затем обращаюсь к удаленной базе данных следующим образом: [email protected], так или иначе, с PostgreSQL?

Сейчас я использую dblink следующим образом:

SELECT logindate FROM dblink('host=dev.toto.com
                              user=toto
                              password=isok
                              dbname=totofamily', 'SELECT logindate FROM loginlog');

При выполнении этой команды я получаю следующую ошибку:

СОВЕТ: никакая функция не соответствует указанному имени и типам аргументов. Возможно, вам потребуется добавить явные типы.

Есть ли у кого-нибудь идеи? Нужно ли "активировать" dblinks или что-то делать, прежде чем использовать их?

Есть ли что-то делать в удаленной базе данных, которую мы будем запрашивать? Нужно ли активировать dblink? Я продолжаю иметь could not establish connection. Это строка типа:

SELECT dblink_connect_u('host=x.x.x.x dbname=mydb user=root port=5432');

IP-адрес правильный, а Postgres запущен на удаленном сервере. Любая идея?

4b9b3361

Ответ 2

С PostgreSQL 9.1 или новее была упрощена установка дополнительных модулей. Зарегистрированные расширения (включая dblink) могут быть установлены с помощью CREATE EXTENSION:

CREATE EXTENSION dblink;

Устанавливается в схему по умолчанию (public по умолчанию). Убедитесь, что ваш search_path установлен правильно, прежде чем запускать команду, и схема видна всем пользователям, которые должны работать с ней.

Выполняется один раз для каждой базы данных. Или запустите его в стандартной системной базе данных template1, чтобы автоматически добавить его в каждую созданную БД. Подробности в руководстве.

Сначала необходимо иметь файлы, обеспечивающие модуль, установленный на локальном компьютере. Очевидно, что для Debian и производных это будет пакет postgresql-contrib-9.1 - для PostgreSQL 9.1.

Ответ 3

Я использую DBLINK для подключения внутренней базы данных для кросс-запросов к базе данных.

Ссылка, взятая из этой статьи.

Установить расширение DbLink.

CREATE EXTENSION dblink;

Проверить DbLink:

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%';

Проверить подключение базы данных:

SELECT dblink_connect('host=localhost user=postgres password=enjoy dbname=postgres');

Ответ 4

В linux найдите dblink.sql, затем выполните в консоли postgresql что-то вроде этого, чтобы создать все необходимые функции:

\i /usr/share/postgresql/8.4/contrib/dblink.sql 

вам может потребоваться установить пакеты contrib: sudo apt-get install postgresql-contrib

Ответ 5

Для установки модулей обычно требуется запустить sql script, который включен в установку базы данных.

Предполагая Linux-подобную ОС

find / -name dblink.sql

Проверьте местоположение и запустите его

Ответ 6

Его можно добавить, используя:

$psql -d databaseName -c "CREATE EXTENSION dblink"

Ответ 7

# or even faster copy paste answer if you have sudo on the host 
sudo su - postgres  -c "psql template1 -c 'CREATE EXTENSION IF NOT EXISTS \"dblink\";'"