72

私は Oracle に慣れており、自分のスキーマに dblink を作成してから、次のようにリモート データベースにアクセスしてmytable@myremotedbいます。

現在、次のように dblink を使用しています。

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

このコマンドを実行すると、次のエラーが発生します。

ヒント: 指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要がある場合があります。

誰かアイデアはありますか?dblink を「アクティブ化」するか、使用する前に何かをする必要がありますか?

クエリを実行するリモート データベースで何かすることはありますか? dblink も有効にする必要がありますか? 私は持っていcould not establish connectionます。これはタイプです:

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

IP アドレスが正しく、Postgres がリモート サーバーで実行されている。何か案が?

4

6 に答える 6

130

PostgreSQL 9.1以降、追加モジュールのインストールは簡単です。のような登録済みの拡張機能dblinkは、次のコマンドでインストールできますCREATE EXTENSION

CREATE EXTENSION dblink;

デフォルトのデフォルトスキーマにインストールしpublicます。search_pathコマンドを実行する前に、が正しく設定されていることを確認してください。スキーマは、それを操作する必要のあるすべてのロールに表示される必要があります。見る:

または、次のコマンドを使用して、任意のスキーマにインストールできます。

CREATE EXTENSION dblink SCHEMA extensions;

見る:

データベースごとに1回実行します。または、標準のシステムデータベースで実行して、新しく作成されたすべてtemplate1のDBに自動的に追加します。マニュアルの詳細。

最初に、モジュールを提供するファイルをサーバーにインストールする必要があります。Debianとその派生物の場合、これはパッケージpostgresql-contrib-9.1になります-PostgreSQL9.1の場合は明らかに。Postgres 10以降、メタパッケージのみが存在しpostgresql-contribます。

于 2012-11-07T07:22:39.790 に答える
12

Linux では、dblink.sql を見つけ、postgresql コンソールで次のように実行して、必要なすべての関数を作成します。

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

contrib パッケージをインストールする必要があるかもしれません:sudo apt-get install postgresql-contrib

于 2011-03-03T02:16:17.217 に答える
4

モジュールをインストールするには、通常、データベースのインストールに含まれている sql スクリプトを実行する必要があります。

Linux ライクな OS を想定

find / -name dblink.sql

場所を確認して実行する

于 2010-10-05T10:20:55.210 に答える
2

以下を使用して追加できます。

$psql -d databaseName -c "CREATE EXTENSION dblink"
于 2014-10-09T13:11:38.393 に答える