我在users-production
157.157.35.333
数据库
我想将其克隆到另一台主机users-sandbox
这是我试过的:
PRODUCTION_HOST=111.111.11.111
SANDBOX_HOST=222.222.22.222
echo "creating db on sanbox"
psql -h ${SANDBOX_HOST} -U postgres -c "CREATE DATABASE \"users-sandbox\";"
pg_dump -h ${PRODUCTION_HOST} -U postgres -d users-production -F c -b -v | \
pg_restore -C -c -h ${SANDBOX_HOST} -U postgres -d users-sandbox -v
但这会创建具有旧名称
的数据库如何使用新名称创建?
答案 0 :(得分:2)
https://www.postgresql.org/docs/current/static/app-pgrestore.html
-d dbname
连接到数据库dbname并直接恢复到数据库中。
但!
-C
- 创建
在恢复之前创建数据库。如果--clean也是 在连接之前指定,删除并重新创建目标数据库 它
使用此选项时,仅使用以-d命名的数据库 发出初始DROP DATABASE和CREATE DATABASE命令。所有数据 将恢复为存档中显示的数据库名称。
所以从-C
参数中删除pg_restore
...
(我的报价格式)