我正在开发一个 shell 脚本,它遍历一系列 Postgres 数据库表名并转储表数据。例如:
# dump data
psql -h $SRC_IP_ADDRESS -p 5432 -U postgres -c "BEGIN;" AWARE
do
:
pg_dump -U postgres -h $IP_ADDRESS -p 5432 -t $i -a --inserts MYDB >> \
out.sql
done
psql -h $IP_ADDRESS -p 5432 -U postgres -c "COMMIT;" MYDB
但是,我担心对数据库的并发访问。由于 Postgres 没有数据库锁,我尝试在循环周围包裹一个 BEGIN 和 COMMIT(使用 psql,如上所示)。这导致来自 psql 命令的错误消息,说:
WARNING: there is no transaction in progress
有什么办法可以做到这一点?如果没有,有什么替代方案?
谢谢!