Ответ 1
проверьте, полезны ли эти ссылки -
Я использую 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 запущен на удаленном сервере. Любая идея?
проверьте, полезны ли эти ссылки -
С PostgreSQL 9.1 или новее была упрощена установка дополнительных модулей. Зарегистрированные расширения (включая dblink) могут быть установлены с помощью CREATE EXTENSION
:
CREATE EXTENSION dblink;
Устанавливается в схему по умолчанию (public
по умолчанию). Убедитесь, что ваш search_path
установлен правильно, прежде чем запускать команду, и схема видна всем пользователям, которые должны работать с ней.
Выполняется один раз для каждой базы данных. Или запустите его в стандартной системной базе данных template1
, чтобы автоматически добавить его в каждую созданную БД. Подробности в руководстве.
Сначала необходимо иметь файлы, обеспечивающие модуль, установленный на локальном компьютере. Очевидно, что для Debian и производных это будет пакет postgresql-contrib-9.1 - для PostgreSQL 9.1.
Я использую 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');
В linux найдите dblink.sql, затем выполните в консоли postgresql что-то вроде этого, чтобы создать все необходимые функции:
\i /usr/share/postgresql/8.4/contrib/dblink.sql
вам может потребоваться установить пакеты contrib: sudo apt-get install postgresql-contrib
Для установки модулей обычно требуется запустить sql script, который включен в установку базы данных.
Предполагая Linux-подобную ОС
find / -name dblink.sql
Проверьте местоположение и запустите его
Его можно добавить, используя:
$psql -d databaseName -c "CREATE EXTENSION dblink"
# 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\";'"