Ce qui suit s'en rapproche :
pg_dump --schema-only --format c dbName | \
pg_restore --schema-only --clean --dbname=dbNameTest
Sauf que cela ne fonctionne pas si le dbNameTest
n'existe pas encore. Ce qui suit fait le travail (bien qu'il se plaigne si le dbNameTest
existe déjà. Je peux vivre avec ça)
createdb dbNameTest
pg_dump --schema-only --format c dbName | \
pg_restore --schema-only --clean --dbname=dbNameTest
Un oneliner avec des options courtes serait :
createdb dbNameTest ; pg_dump -s -F c dbName | pg_restore -s -c -d dbNameTest
Un script sh pg_copy_schema
donnerait quelque chose comme :
#!/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"