Oneline bash命令转储并创建PostgreSQL数据库

时间:2018-05-05 13:06:09

标签: database postgresql psql

有时我需要创建一个名为DB_DEV的数据库,它是与现有DB完全相同的副本(相同的方案和数据)。标识DB_DEV已经存在,我只想删除它并重新创建它。

我使用了这个命令:

"pg_dump --clean -U user db | psql db_dev"

似乎有效,但我意识到它不会删除db中不存在的表。

因此,如果我运行此命令,然后在"table"中创建一个表DEV_DB并再次运行该命令,"table"仍然存在于DEV_DB数据库中,尽管在{ {1}}不是。

您知道如何修改命令以使其正常工作吗?

1 个答案:

答案 0 :(得分:0)

您可以在恢复转储之前删除并重新创建数据库:

psql postgres -c 'drop database db_dev; create database db_dev;'
pg_dump --clean -U user db | psql db_dev

或者:

dropdb db_dev
createdb db_dev
pg_dump --clean -U user db | psql db_dev