我意外地在删除5000个奇数行的实时数据上运行查询。我做了一个备份我这样做之前,以及备份的格式如下:只使用Postgres中的COPY STDIN恢复一些键值?
COPY table (id, "position", event) FROM stdin;
529 1 5283
648 1 6473
687 1 6853
\.
问题是,如果我运行它,我得到:
ERROR: duplicate key value violates unique constraint "table_pkey"
有没有办法改变这个查询只插入我删除的行?像“如果存在,忽略”的东西?通常我知道这会影响许多事情,但因为它实际上只是那些需要替换的条目,我认为这样的事情可以起作用,但我不知道它是否存在?
使用'create table copy_table like original_table'可能是一个更好的选择,而不是'as select ...',例如,应保留缺省值,不为空或检查约束。 – 2013-02-21 08:53:18
如果这只是恢复过程的快速和临时表,并且备份副本被认为可靠,那么可以毫无争议地说是不必要的。实际上使用未记录的表格可能会起作用。 – Gavin 2013-02-21 21:17:19