我正在尝试在postgres数据库中做一个非常简单的插入语句。它不起作用,但它也没有错误,所以我不知道如何排除故障。 这是声明:
INSERT INTO my_table (col1, col2) select col1,col2 FROM my_table_temp;
临时表中有大约200万个条目,my_table中有50个条目。临时表没有索引或约束,但my_table中的两列都有btree索引,而col1有外键约束。
我跑了第一个查询大约20天。上次我尝试了大约50米的类似插页,花了3天,所以我预计它需要一段时间,但不是一个月。而且,my_table不会变长。相隔1天查询,以下产生相同的确切数字。
从my_table中选择count(*);
所以它根本就不会插入。但它也没有错误。考虑到系统资源的使用情况,它似乎根本没有做任何事情,这个过程并不是在吸取资源。
查看其他正在运行的查询,我有权查看的任何其他内容都无法触及任何一个表,而我是唯一一个使用它们的人。
我不确定如何排除故障,因为没有错误。它没有做任何事情。对可能出错的事情或需要检查的事情的任何想法都会非常有帮助。
答案 0 :(得分:2)
为了将来绊倒这个问题的人:
经过长时间的讨论(参见上面评论中的linked discussion),问题结果与psycopg2在内存中缓冲查询有关。
另一个有用的注意事项:插入带索引的表格很慢,因此可以在批量加载之前删除它们,然后再添加它们。
答案 1 :(得分:0)
在我看来,这是日期格式问题。在介入数据库之前,我评论了date属性,它起作用了。