我正在尝试将某些表从9.5 beta 2转储到9.4.4服务器。我使用的命令的形式是相当标准的:
pg_dump -t table dbname | psql -h hostname -d dbname
我正在使用Postgres用户,我意识到这可能并不理想,但是因为这两个都是我仅使用的dev数据处理框,所以与随后的错误有关。最初,我得到了错误
错误:无法识别的配置参数“ row_security”
这是预期的,因为此功能是9.5中的新增功能,是的,我意识到不建议在不同的Postgres版本之间使用pg_dump,但是,令人遗憾的是,由于我遇到了一个非常模糊的错误,并且需要移动一个大的错误,这是不可避免的一次静态数据量。
因此,使用此可怕的技巧来删除row_security错误,然后在第一个错误上启用stop:
pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname
我现在得到:
错误:拒绝创建“ pg_catalog.tablename”的权限详细信息:当前不允许修改系统目录
尽管可能不希望使用Postgres用户/角色,但我的理解是应该没有这种性质的权限问题。对于任何建议,我都持开放态度,因为这是一次性操作,并且它们是未连接到任何实时服务的数据处理开发箱,因此权宜于优先于理想的公司数据访问策略。话虽如此,最好了解如何正确执行此操作,并在将来避免这样做。