回答:
同じPostgreSQLインストール内でそれを複製したいが、アクティブに接続しているユーザーがいない場合、便利なショートカットがあります:
CREATE DATABASE my_new_database TEMPLATE my_old_database;
またはシェルから
createdb -T my_old_database my_new_database;
そうしないと、使用する必要がありますpg_dump
、createdb
そしてpg_restore
、例えば
pg_dump -Fc -f olddb.pgdump -d olddb &&\
createdb newdb &&\
pg_restore -d newdb olddb.pgdump
使用している場合 nohup
ている場合、sshセッションを失ってもコマンドは終了しませんscreen
。代わりに使用することを検討してください。
pg_dump
、pg_restore
より選択的にしたい場合は(たとえば)構造だけをダンプします。
Postgresでは、新しいデータベースを作成するときに、サーバー上の既存のデータベースをテンプレートとして使用できます。pgAdminがデータベースの作成ダイアログでオプションを提供するかどうかはわかりませんが、そうでない場合はクエリウィンドウで次を実行できるはずです。
CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
それでも、あなたは得るかもしれません:
エラー:他のユーザーがソースデータベース "originaldb"にアクセスしています
データベースから他のすべてのユーザーを切断するには、次のクエリを使用できます。
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'originaldb' AND pid <> pg_backend_pid();
CREATE DATABASE my_new_database TEMPLATE my_old_database;