sql >> Databáze >  >> RDS >> PostgreSQL

Použijte výsledek pg_dump jako vstup pro pg_restore

Blíží se následující:

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

Až na to, že to nefunguje, pokud dbNameTest zatím neexistuje. Následující funguje (i když si stěžuje, pokud dbNameTest již existuje. Dokážu s tím žít)

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

Oneliner s krátkými možnostmi by byl:

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

Skript sh pg_copy_schema by vypadalo něco jako:

#!/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. php pdo emulate_prepares false stringify_fetches false int still string

  2. MySQL REPLACE() – Nahradí všechny instance podřetězce jiným řetězcem

  3. PostgreSQL role drop selže kvůli výchozím oprávněním

  4. Jak provést uloženou proceduru uvnitř výběrového dotazu