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"