0
私は、Oracleでは、保存されたdblinkを作成することができます。Postgresqlはストアドデータベースリンクを作成します
CREATE PUBLIC DATABASE LINK my_link CONNECT TO my_schema IDENTIFIED BY shema_password USING 'remote';
その後、我々は我々のクエリでそれを使用することができます:作成データベース・リンク用
スクリプト:たとえば
SELECT * FROM [email protected]_link;
私はPostgresのために同じソリューションを見つけることができませんでした。
このためには、名前paramのdblink_connect
を使用する必要があります。しかし、作成された名前のdblinkは、セッションの終了後に破棄されます。
それとも我々は、すべてのクエリのデータベース・リンク接続を作成することができます
SELECT *
FROM dblink('host= port= dbname= user= password=',
'select table_schema, table_name from information_schema.tables where table_schema = ''data''') AS t1 (table_schema TEXT, table_name TEXT);
は、それが可能Postgresの中に保存されたデータベース・リンクを作成して、別のクエリでそれを使用しますか?または、それらをカプセル化するdblink接続パラメータを返す関数を作成する必要がありますか?
postgres_fdw拡張を作成します:私は外国人のテーブルを使用しようとすると、次のステップを実行します
CREATE EXTENSION IF NOT EXISTS postgres_fdw;
は、サーバーを作成します。
CREATE SERVER my_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '-', port '-', dbname '-');
とのマッピングを作成しますユーザー設定リモートユーザとパスワード 'SYS':
CREATE USER MAPPING FOR sys SERVER light_house OPTIONS (USER 'remote_user', PASSWORD 'remove_password');
GRANT USAGE ON FOREIGN SERVER my_server TO sys;
は、スキーマ内の外部テーブルを作成します。
[2F003] ERROR: password is required
Description: Non-superuser cannot connect if the server does not request a password.
Help: Target server's authentication method must be changed.
"*サーバーがパスワードを要求しない場合、スーパーユーザー以外は接続できません*" - 接続するためにパスワードを必要としない運用サーバーを正直実行しますか? –
@a_horse_with_no_name申し訳ありませんが、私は断言しません。私はユーザーのマッピング(私は更新された質問とスクリプトを追加)でリモートユーザーにパスワードを宣言し、私はそれが十分か間違っているか? – HAYMbl4
エラーメッセージは、サーバーがパスワードを要求していないことを示しているようです。 –