Psycopg2 - 插入大数据导致服务器意外关闭

时间:2017-10-06 06:40:54

标签: python sql psycopg2

我试图看到其他类似的问题,但他们并没有给我正在寻找的答案。我的主要目标是将大型数据集存储到Google云端。我试图将大约1000个插入语句存储到谷歌云中,并且进展顺利。

另一方面,存储超过200.000插入语句证明是挑战比我想象的。在我的代码中,我有这个功能:

def insert_to_gcloud(information):
    db = psycopg2.connect(database="database",
                          user="user",
                          password="password",
                          host="host",
                          port=1234)
    cur = db.cursor()
    cur.execute("".join(information))

    db.commit()
    db.close()

我使用批量插入(假设更快),其中第一个索引包含insert语句和其余值。然后我使用"" .join()将其变成一个字符串。举一个简单的例子:

  

INSERT INTO tbl_name(a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9);

["INSERT INTO tbl_name (a,b,c) VALUES",
"(1,2,3)," ,
"(4,5,6)," ,
"(7,8,9);" ]

首先,我尝试执行200.000插入语句,但是大约1分钟后我收到了关于EOF的错误。我想这是发送大,所以我做了一个块功能。基本上,它根据我的需要将数组划分为适当的大小。 (reference

然后使用简单的for循环一次存储每个块:

for i in range(len(chunk_block)):
    insert_to_gcloudd(chunk_block[i])

好像它有效,但我让它跑了一晚,用了237分钟,我收到了这条消息:

  

psycopg2.OperationalError:服务器意外关闭了连接           这可能意味着服务器异常终止           处理请求之前或处理时。

我的下一个测试是将块块存储到文件中,读取并记录文件。如果服务器再次意外关闭,我可以检查日志。想到,在我看来,这不是一个很好的方法,但我在这里没有想法。

所以对我的问题,我可以尝试任何选择吗?也许我还可以使用其他工具?

0 个答案:

没有答案