10

PostgreSQL8.4に2つのサーバーがあります。

server1:5432
server2:5432

次に、server1からテーブルをコピーして、server2のデータベースに配置します。
それは可能ですか?

アップデート

私は@ValeryViktorovskyの答えのようにしようとします:

pg_dump --server1:5432 --encoding=utf8 --no-owner --username=postgres --123456 np_point > D:\np_point.sql
psql --server2:5432 --username=postgres mrsk -f D:\np_point.sql

エラーが発生します:

ERROR:  syntax error at or near "pg_dump"
LINE 1: pg_dump --server1:5432 --encoding=utf8 --no-owner --use...
4

6 に答える 6

20

最も安全な方法は、pg_dumpを使用することです。

pg_dump --host server1 --encoding=utf8 --no-owner --username=foo --password -t table_name db_name > server1_db.sql
psql --host server2 --username=foo db_name -f server1_db.sql
于 2013-03-11T09:41:55.187 に答える
5

正確なコマンド-

1.経由pg_dumpでファイルにエクスポートします。

    pg_dump --host "source hostname" --port 5432 --username "username" --no-password --verbose --file "filename" --table "source schema.tablename" "source db name"

これにより、上記のコマンドを実行したディレクトリに「filename」というファイルが作成されます。このファイルには、ソーステーブルのスキーマとデータが含まれます。任意の絶対パスを指定することもできます。

2.psqlを介してインポートします。

    psql --host "target hostname" --port 5432 --username "username" --password --verbose --file "file name" "target db name"  

->これはパスワードの入力を求めます

インポートを実行する前に、ターゲットテーブルが存在する場合はドロップします。

チャームのように機能し、2分以内に1,000万列を完成させました

于 2019-02-20T05:51:10.330 に答える
4

これを試して

psqlからCOPYコマンドを使用します。server1に接続してCSVにエクスポートしてから、server2に接続してCSVからインポートします

于 2013-03-11T09:50:58.747 に答える
2

私はPythonで役立つ小さなスクリプトを書きました。注-小さなテーブルでのみ機能します。まず、パンダ、sqlalchemy、psycopg2をpipインストールする必要があります。ファイルをpycopy.pyとして作成し、「python pycopy.pytablename」(引用符なし)で実行します。ソースと宛先を変更して、他のdbタイプで機能するようにすることができます。ソースと宛先の文字列を変更するだけです。

スクリプト:

import pandas as pd
import sys
import sqlalchemy as sa

strengine_source='postgresql://user:password@db_ip:5432/dbsourcename'
strengine_dest='postgresql://user:password@db_ip:5432/dbdestinationname'

if len(sys.argv) > 1:
        tblname = sys.argv[1]
        df=pd.read_sql("select * from " + tblname,sa.create_engine(strengine_source))
        df.to_sql(tblname,sa.create_engine(strengine_dest), index=False)
于 2018-10-23T14:54:18.067 に答える
1

これにより、特定のテーブルのみが特定のデータベースから宛先データベースにコピーされます

 pg_dump -h localhost -U postgres -p 5432 -C -t table_name source_db_name | ssh -C username@ip "psql -h localhost -U postgres -p 5432 destination_db_name"
于 2015-07-28T12:19:49.070 に答える
1

Linuxシェルスクリプトを使用して、テーブルデータをあるサーバーから別のPostgreSQLサーバーに移行することもできます。

以下の同様のスタックの質問に回答を投稿しました。これを参照してください。 PostgreSQLデータベースを別のサーバーにコピーしています

于 2017-03-02T20:23:22.647 に答える