使用pg_dump转储数据库,忽略我们无权访问的表

时间:2018-08-27 01:33:45

标签: postgresql pg-dump database-dump

我有一个脚本,其中description = data.description.replace(/\n/g, "\n<br/>"); 失败,并显示如下消息:

pg_dump

这导致整个转储中止。

有没有办法做到这一点?

  • 忽略用户不拥有的表吗?
  • 忽略错误?

我真的不希望这些表转储,所以即使我们可以访问它们,也不能完全解决问题。

(Postgres 9.6.3)

1 个答案:

答案 0 :(得分:4)

似乎没有标准的方法可以执行此操作,但是使用--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