web-dev-qa-db-ja.com

PostgreSQL:あるデータベーステーブルから別のデータベースにデータをコピーする方法

データベースからデータをコピーする方法の簡単な例が必要ですDB1テーブルT1データベースDB2テーブルT2

T2T1(同じ列名、プロパティ。データが異なる)のような同一の構造を持ちます。DB2はDB1と同じサーバーで実行されますが、ポートは異なります。

7

2つのデータベースが2つの異なるサーバーインスタンス上にある場合は、db1からCSVでエクスポートしてから、db2にデータをインポートできます。

COPY (SELECT * FROM t1) TO '/home/export.csv';

次に、db2にロードし直します。

COPY t2 FROM '/home/export.csv';

ここでも、2つの異なるデータベースインスタンスの2つのテーブルは同じ構造である必要があります。

コマンドラインツール:pg_dumpとpsqlを使用すると、この方法でも実行できます:

pg_dump -U postgres -t t1 db1 | psql -U postgres -d db2

pg_dumppsqlの両方にコマンドライン引数を指定して、サーバーのアドレスやポートを指定できます。

別のオプションは、次のような外部ツールを使用することです: openDBcopy 、テーブルの移行/コピーを実行します。

8
aleroot

あなたはこれを試すことができます-

 pg_dump -t table_name_to_copy source_db | psql target_db
4
Mohammad Aarif

SQL Workbench/Jをお勧めします。それはデータパンパーである素晴らしい機能を持っています。列IDをスキップすることを選択できます。この画像( Data Pumper in action )は、GUIモードを使用する場合の例です。コンソールモードを使用する場合は、以下のコード。

WbCopy -sourceProfile=source
   -sourceGroup=DB1
   -targetProfile=target
   -targetGroup=DB2
   -targetTable=table2
   -sourceTable=table1
   -columns='sales_code/sales_code, store_sid/store_sid, pos_id/pos_id'
   -ignoreIdentityColumns=false
   -deleteTarget=true
   -continueOnError=true
   -commitEvery=1000;
0
Dwi Santoso