我的一个应用程序有一个Postgres RDS实例。 我需要将3个表从它复制到数据库的类似克隆。
我也看到mytable_id_seq表,现在我知道这些表在postgres术语中称为序列。
当我创建这三个表的转储并恢复它们时,我是否必须对_id_seq序列做任何事情?
我是否还必须恢复它们,以使转储数据像在原始表中一样工作?
答案 0 :(得分:0)
从转储还原整个数据库时,默认情况下它包含CREATE SEQUENCE语句。这些语句将序列初始化为正确的状态。但是,如果仅使用选定的表进行部分转储,则必须手动设置序列。 假设您的表名称为“clip”,您可以使用此查询检查当前值:
从clip_id_seq中选择last_value
如果你想在恢复后更新序列,可以使用这个简单的查询来完成:
SELECT SETVAL('clip_id_seq',SELECT MAX(id)FROM clip)
答案 1 :(得分:0)
pg_dump -d database_name -t mg_cnd -F c > database_backup.sql
pg_restore -U database_user --data-only -d database_name -t mg_cnd -F c <file_location>