sql >> Databasteknik >  >> RDS >> PostgreSQL

Använd pg_dump-resultat som indata för pg_restore

Följande kommer nära:

pg_dump --schema-only --format c dbName | \
  pg_restore --schema-only --clean --dbname=dbNameTest

Förutom att det inte fungerar om dbNameTest finns inte ännu. Följande gör jobbet (även om det klagar om dbNameTest existerar redan. Jag kan leva med det)

createdb dbNameTest
pg_dump --schema-only --format c dbName | \
  pg_restore --schema-only --clean --dbname=dbNameTest

En oneliner med korta alternativ skulle vara:

createdb dbNameTest ; pg_dump -s -F c dbName | pg_restore -s -c -d dbNameTest

Ett sh-skript pg_copy_schema skulle gå ungefär som:

#!/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"


  1. VBScript hänger sig vid start av batchfil med WShell.Script Run

  2. Gå med i samma tillfälliga bord i MySQL

  3. Sorterar MySQL-fråga efter latitud/longitud

  4. UPDATE-satsen kom i konflikt med REFERENCE-begränsningen - SQL Server / TSQL Tutorial Del 76