使用新名称克隆postgres数据库

时间:2018-05-09 07:23:54

标签: postgresql pg-restore

我在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

但这会创建具有旧名称

的数据库

如何使用新名称创建?

1 个答案:

答案 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 ...

(我的报价格式)