0

エラー: 関数 dblink_connect_u(text, text) は存在しません 行 3: from dblink_connect_u(cast(varchar 'dbname=test_db... ^ ヒント: 指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要がある場合があります。

親愛なるみんな、

dblink を使用して、あるデータベースから別のサーバー内の別のデータベースに接続するシェル スクリプトを実行すると、エラーが発生します。上記は、私がヒットしたエラーを示しています。ちなみに、Linuxサーバーで共有ディレクトリを確認しました。機能があります:/usr/share/postgresql/8.4/contrib/dblink.sql

しかし、なぜ私はまだ上記のエラーに遭遇するのですか?

以下は私のシェルスクリプトコードです:

echo "Start insert records..."
psql cr032 <<THE_END
select t1.*
into test_table
from dblink_connect_u(cast(varchar 'dbname=TEST_DB port=5432 host=10.0.0.10 user=test password=123456' as text),
            cast(varchar 'select applicationid, appname, appversion, apppath, appdatetime, description, systemtype from test_table' as text))
       as t1(applicationid varchar(36), appname varchar(100), appversion varchar(20), apppath varchar(200), appdatetime timestamp, description text, systemtype smallint);
THE_END
echo "End insert records!"

親切に助けてください。あなたの支援は大歓迎です!

4

2 に答える 2

1

エラーの根本的な原因を見つけました。これは、インストール後に dblink.sql を postgres データベースにロードしなかったためです。以下は、dblink.sql を postgres にロードするコマンドです。postgres/bin フォルダーの下でコマンドを実行します。

psql -d "データベース名" < "dblink_location"/dblink.sql

于 2013-09-21T03:59:50.850 に答える
0

キャスト varchar...as text を省略するとどうなりますか? また、以下の線に沿って考えます。dblink_connect_u を使用して接続を確立してから、dblink を使用してクエリを実行します。

   Select dblink_connect_u( 'connection1',
     'dbname=TEST_DB port=5432 host=10.0.0.10 
        user=test password=123456')

  select t1.*
   into test_table
   from dblink('connection1',
    'select applicationid, appname, appversion, apppath, 
     appdatetime, description, systemtype from test_table' )
   as t1(applicationid varchar(36), appname varchar(100), 
    appversion varchar(20), apppath varchar(200), 
      appdatetime  timestamp, description text, systemtype smallint);
于 2013-09-11T03:55:32.537 に答える