追記(2015.8.6)PostgreSQL 9.5ではもっと簡単で、8月4~6日の記事にしました。
要約:一昨日の続きです。pgAdminとdblinkを使いました。下のSQLが全ての手順。 実行環境はWindows 7 32bit + PostgreSQL Portable 9.4.1 + PostGIS 2.1.5。上記のSQLを実行すると、下のようになります(コピー先スキーマをhogeに設定)。テーブルサイズ合計は約14MB。先方のDBの送出速度が遅いので、約100秒かかりました。
短い説明
もともとuDigチュートリアル用のDBですが、接続クライアントがuDigに限定されてなく、利用上の制約も特に見当たらないのでコピーしてみました。テーブル定義のジオメトリ列に、PostGIS 2.0から導入された簡単な書き方(TypMod、型修飾子、下記参照)を使っています。 » Boundless : PostGIS 2.0 New Features: Typmod
pg_dumpは使えず
最初pg_dumpで取得できるか試したところ、テーブルにserial型があって駄目。pg_dumpが自動的に連番の元の情報(シーケンスのテーブル)を見に行き、こちらのアクセス権限がないのでエラーになります。下の例と同じ。 » Stack Overflow : Dump a table without sequence table in postgres
テーブル定義を手動でコピー
そこで、テーブル定義を一つずつ確認しSQLを作成することに。pgAdminでサンプルDBに接続し、オブジェクトブラウザで各テーブルをクリックすればSQLペインにテーブル定義が出るので ↓ 手動でコピーして控え。DB接続に必要なパラメータは一昨日の記事の冒頭にあります。 ところでpgAdminで接続する際、「このpgAdminがサポートするPostgreSQLは8.4から9.4だけど、接続先は違うよ?」と警告が出ます。接続してPostgreSQLのバージョンを見ると8.3でした。 PostgreSQLが8.3と古く、PostGIS Support MatrixによればPostGIS 2.0以降がサポートされていないので、おそらく先方のPostGISは1.x系。テーブル定義にジオメトリ列への制約が3つ付いていますが ↓ PostGIS 2.0以降ではもっと簡単になりました。画像の下が少し詳しい説明。
-- PostGIS 1.x
CREATE TABLE hoge (
    gid int,
    geom geometry,
    
    -- Dimension
    CONSTRAINT enforce_dims_geom CHECK (ndims(geom) = 2),
    
    -- Geometry Type
    CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = 'LINESTRING'::text OR geom IS NULL),
    
    -- SRID
    CONSTRAINT enforce_srid_geom CHECK (srid(geom) = 4326)
);

-- PostGIS 2.x using TypMod
CREATE TABLE hoge (
    gid int,
    geom geometry(LineString, 4326) -- 2D LineString, SRID 4326
);
dblinkでデータ取得とテーブル作成を同時に
外部DBに接続してデータを持ってくるには、dblinkかpostgres_fdwという拡張が使えます。後者の方が新しいですが、今回は経験のあるdblinkを概ね下のように使いました。最初に外部DBに接続、次にテーブルをSELECTしてそのままコピー先DBのテーブルに保存。ここでテーブルの列名・型を指定する必要があり、先ほどpgAdminでコピーし控えておいたテーブル定義文を使います。その際、ジオメトリ列への制約は使わずTypModに書き換え。
-- connect to remote DB
SELECT dblink_connect('
    host=
    port=
    dbname=
    user=
    password=
');

-- create table and import data
CREATE TABLE fuga AS
SELECT * FROM dblink('SELECT * FROM remote_table') AS t (
    column1 columntype,
    column2 columntype,
    column3 columntype,,,
    -- paste from DDL using TypMod
);

-- disconnect from remote DB
SELECT dblink_disconnect();
上のひな形で各テーブルのCREATE ... AS SELECT文を作り、主キーを追加したのが冒頭のSQL。これを実行してサンプルDBをローカルにコピーできました。テーブル定義を一つずつ手動で控えるのが手間でしたが、pgAdmin上で作業が完結したので良しとします。