web-dev-qa-db-ja.com

あるデータベースから別のデータベースに数行をコピーする

2つの異なるマシン上に2つのPostgreSQLデータベースがあり、ネットワーク接続はslowです。
最初のインスタンスから2番目のインスタンスにいくつかの選択された行をコピーしたいと思います。残念ながら、単一のテーブルの完全なダンプは大きすぎます。 CLIソリューションで問題ありません。

4
Michas

ここでは、サードパーティのツールに頼らずにそれを実行する方法をいくつか紹介します。

PostgreSQL 9.3を使用している場合は、拡張子 postgres_fdw を使用できます。

古いバージョンのPostgreSQLを使用している場合は、 dblink を参照してください。

コマンドラインのみのソリューションが必要で、Linux(またはCygwinなど)を使用している場合は、次のようなことを試すことができます。

psql -d yourdb -qtAXc "COPY (select col1, col2, col3 from your_table where id between 123 and 456) TO STDOUT CSV HEADER" -U youruser -h localhost -p 5432 \
| psql -d yourremotedb -U youruser -h your_remote_Host -qtAXc "COPY yourtable FROM STDIN CSV HEADER"
7
bma