我需要在同一台服务器上克隆一个数据库(只复制架构)。我想使用从pg_dump获取的输入,并将其导入到pg_restore中。我知道可以使用psql完成此操作,但是psql没有"-c clean"选项。
这是否可能使用pg_restore实现?
pg_dump --schema public dbName | psql dbNameTest
我需要在同一台服务器上克隆一个数据库(只复制架构)。我想使用从pg_dump获取的输入,并将其导入到pg_restore中。我知道可以使用psql完成此操作,但是psql没有"-c clean"选项。
这是否可能使用pg_restore实现?
pg_dump --schema public dbName | psql dbNameTest
pg_dump --schema-only --format c dbName | \
pg_restore --schema-only --clean --dbname=dbNameTest
dbNameTest
已经存在,否则它是不起作用的。以下代码可以解决这个问题(虽然如果dbNameTest
已经存在会报错,但我可以接受)。createdb dbNameTest
pg_dump --schema-only --format c dbName | \
pg_restore --schema-only --clean --dbname=dbNameTest
createdb dbNameTest ; pg_dump -s -F c dbName | pg_restore -s -c -d dbNameTest
pg_copy_schema
的 sh 脚本可能是这样的:#!/bin/sh
if [ -z "$2" ] ; then echo "Usage: `basename $0` original-db new-db" ; exit 1 ; fi
echo "Copying schema of $1 to $2"
createdb "$2" 2> /dev/null
pg_dump --schema-only --format c "$1" | pg_restore --schema-only --clean --dbname="$2"
--schema-only
呢? - Nico Brenner
pg_dump --format=c ... | pg_restore ...
吗? - user330315pg_dump --schema-only (-c -C ... 更多选项 ...) databasename >myfile.sql
,并在使用 psql 提交之前编辑输出文件。--schema-only 的输出不是很大。 - wildplasser