Не похоже, что есть стандартный способ сделать это, но используя флаг --exclude-table
, мы можем использовать обходной путь:
export EXCLUDETABLE=$(psql -t -h $HOST -d $DBNAME -c "select '--exclude-table=' || string_agg(tablename,' --exclude-table=') FROM pg_catalog.pg_tables WHERE tableowner NOT LIKE 'myuser';" )
Это устанавливает EXCLUDETABLE, чтобы выглядеть как --exclude-table=foo --exclude-table=blah
Теперь мы передаем это pg_dump
:
echo Excluding these tables from dump: $EXCLUDETABLE
pg_dump -h $HOST --format plain --encoding UTF8 --schema=public --schema-only --no-owner $EXCLUDETABLE $DBNAME > public-schema.sql