【发布时间】:2021-01-03 03:06:34
【问题描述】:
我在 Heroku 中的迁移遇到了一些问题。我已经尝试了几件事,但似乎都没有奏效。 我觉得我应该删除导致问题的表,这将删除生产中的所有数据。
如果我删除表并重新创建表,我能否恢复我丢失的所有数据?因为我会在删除表之前在 Heroku 上备份我的数据库。
谢谢!
【问题讨论】:
标签: postgresql heroku heroku-postgres heroku-toolbelt heroku-api
我在 Heroku 中的迁移遇到了一些问题。我已经尝试了几件事,但似乎都没有奏效。 我觉得我应该删除导致问题的表,这将删除生产中的所有数据。
如果我删除表并重新创建表,我能否恢复我丢失的所有数据?因为我会在删除表之前在 Heroku 上备份我的数据库。
谢谢!
【问题讨论】:
标签: postgresql heroku heroku-postgres heroku-toolbelt heroku-api
您应该运行备份
pg_dump -h hostname -p 5432 -U username -F c -t mytable -f dumpfile mydatabase
然后,在您删除并重新创建表后,您可以使用恢复数据
pg_restore -h hostname -p 5432 -U username -a -d mydatabase dumpfile
但是,如果表结构发生了变化,这将不起作用。
在这种情况下,您可能希望直接使用COPY 将数据写入文件并从那里恢复。
例如,假设您计划添加另一列。然后你可以转储
COPY (SELECT *, NULL FROM mytable) TO '/file/on/dbserver';
使用新列创建表后,您可以
COPY mytable FROM '/file/on/dbserver';
新列将填充 NULL 值。
修改这个基本配方以满足更多奇特的要求。
【讨论】: