Làm thế nào để sao chép cơ sở dữ liệu trong postgresql?


15

Tôi cần sao chép cơ sở dữ liệu hiện có bao gồm lược đồ và cấu trúc của nó sang cơ sở dữ liệu mới khác. Tôi cần điều này trong môi trường lệnh shell chứ không phải trong pgadmin. Xin vui lòng giúp tôi.

nohup pg_dump exampledb > example-01.sql
createdb -O postgres exampledbclone_01

người dùng của tôi là "postgres"

nohup psql exampledbclone_01 < example-01.sql
$ pg_dump mydb > db.sql
$ psql -d newdb -f db.sql

Câu trả lời:


31

Nếu bạn muốn sao chép nó trong cùng một cài đặt PostgreSQL và bạn không chủ động kết nối người dùng, có một phím tắt tiện dụng:

CREATE DATABASE my_new_database TEMPLATE my_old_database;

hoặc từ vỏ

createdb -T my_old_database my_new_database;

Nếu không, bạn sẽ cần phải sử dụng pg_dump, createdbpg_restore, vd

pg_dump -Fc -f olddb.pgdump -d olddb &&\
createdb newdb &&\
pg_restore -d newdb olddb.pgdump

Nếu bạn đang sử dụng nohupđể lệnh không chết nếu bạn mất phiên ssh, hãy xem xét sử dụng screenthay thế.


Tuyệt vờiCREATE DATABASE my_new_database TEMPLATE my_old_database;
anjaneyulubatta505

Xuất sắc! Nó không chỉ sao chép cấu trúc, mà còn dữ liệu!
Foton

@Foton Yep, mặc dù bạn có thể sử dụng pg_dumppg_restorenếu bạn muốn chọn lọc hơn và kết xuất (nói) chỉ cấu trúc.
Craig Ringer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.