Câu trả lời:
nếu phiên bản <8.4.0
pg_dump -D -t <table> <database>
Thêm vào -a
trước -t
nếu bạn chỉ muốn CHÈN, không có TẠO BẢNG, v.v. để thiết lập bảng ngay từ đầu.
phiên bản> = 8.4.0
pg_dump --column-inserts --data-only --table=<table> <database>
-d
, các phiên bản -a
, và -t
ngắn vẫn còn tồn tại. Kiểm tra bằng PG11.
--inserts
là một lựa chọn khác; nó khôi phục nhanh hơn một chút nhưng không thể chịu được các thay đổi thứ tự cột
Đưa vào một kịch bản mà tôi thích như thế này:
#!/bin/bash
set -o xtrace # remove me after debug
TABLE=charge_unit
DB_NAME=prod_sit_entities_db
BASE_DIR=/var/backups/someDir
LOCATION="${BASE_DIR}/myApp_$(date +%Y%m%d_%H%M%S)"
FNAME="${LOCATION}_${DB_NAME}_${TABLE}.sql"
# Create backups directory if not exists
if [[ ! -e $BASE_DIR ]];then
| mkdir $BASE_DIR
| chown -R postgres:postgres $BASE_DIR
fi
sudo -H -u postgres pg_dump --column-inserts --data-only --table=$TABLE $DB_NAME > $FNAME
sudo gzip $FNAME
chỉ trong trường hợp bạn đang sử dụng truy cập từ xa và muốn kết xuất tất cả dữ liệu cơ sở dữ liệu, bạn có thể sử dụng:
pg_dump -a -h your_host -U your_user -W -Fc your_database > DATA.dump
nó sẽ tạo ra một kết xuất với tất cả dữ liệu cơ sở dữ liệu và sử dụng
pg_restore -a -h your_host -U your_user -W -Fc your_database < DATA.dump
để chèn cùng một dữ liệu vào cơ sở dữ liệu của bạn vì bạn có cùng cấu trúc