Folgendes kommt nahe:
pg_dump --schema-only --format c dbName | \
pg_restore --schema-only --clean --dbname=dbNameTest
Außer es funktioniert nicht, wenn der dbNameTest
existiert noch nicht. Das Folgende erledigt den Job (obwohl es sich beschwert, wenn der dbNameTest
ist bereits vorhanden. damit kann ich leben)
createdb dbNameTest
pg_dump --schema-only --format c dbName | \
pg_restore --schema-only --clean --dbname=dbNameTest
Ein Einzeiler mit kurzen Optionen wäre:
createdb dbNameTest ; pg_dump -s -F c dbName | pg_restore -s -c -d dbNameTest
Ein sh-Skript pg_copy_schema
würde etwa so aussehen:
#!/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"