Henrikが書いたように、dblinkを使用してリモートデータベースに接続し、結果をフェッチできます。例えば:
psql dbtest
CREATE TABLE tblB (id serial, time integer);
INSERT INTO tblB (time) VALUES (5000), (2000);
psql postgres
CREATE TABLE tblA (id serial, time integer);
INSERT INTO tblA
    SELECT id, time 
    FROM dblink('dbname=dbtest', 'SELECT id, time FROM tblB')
    AS t(id integer, time integer)
    WHERE time > 1000;
TABLE tblA;
 id | time 
----+------
  1 | 5000
  2 | 2000
(2 rows)
PostgreSQLには、レコードの疑似型(関数の引数または結果の型のみ)があり、別の(不明な)テーブルからデータをクエリできます。
編集:
必要に応じて、準備済みステートメントとして作成することもできます。
PREPARE migrate_data (integer) AS
INSERT INTO tblA
    SELECT id, time
    FROM dblink('dbname=dbtest', 'SELECT id, time FROM tblB')
    AS t(id integer, time integer)
    WHERE time > $1;
EXECUTE migrate_data(1000);
-- DEALLOCATE migrate_data;
編集(そう、別の):
私はあなたの改訂された質問を見ました(重複として閉じられたか、これと非常によく似ています)。
私の理解が正しければ(PostgresはTBLAを持っており、dbtestはTBLBを持って、あなたが望むローカル選択したリモート挿入し、いないリモートのローカル挿入と選択上記のように):
psql dbtest
SELECT dblink_exec
(
    'dbname=postgres',
    'INSERT INTO tbla
        SELECT id, time
        FROM dblink
        (
            ''dbname=dbtest'',
            ''SELECT id, time FROM tblb''
        )
        AS t(id integer, time integer)
        WHERE time > 1000;'
);
そのネストされたdblinkは好きではありませんが、私の知る限り、dblink_exec本体でtblBを参照できません。LIMITを使用して上位20行を指定しますが、最初にORDER BY句を使用してそれらをソートする必要があると思います。