我有一个相当大的数据帧(500k+行),我正在尝试将其加载到Vertica。我可以使用以下代码,但速度非常慢。
#convert df to list format
lists = output_final.values.tolist()
#make insert string
insert_qry = " INSERT INTO SCHEMA.TABLE(DATE,ID, SCORE) VALUES (%s,%s,%s) "
# load into database
for i in range(len(lists)):
cur.execute(insert_qry, lists[i])
conn_info.commit()
我看过一些帖子讨论使用 COPY 而不是 EXECUTE 来完成如此大的负载,但还没有找到一个好的工作示例。
最佳答案
经过多次尝试和错误...我发现以下内容对我有用。
# insert statements
copy_str = "COPY SCHEMA.TABLE(DATE,ID, SCORE)FROM STDIN DELIMITER ','"
# turn the df into a csv-like object
stream = io.StringIO()
contact_output_final.to_csv(stream, sep=",",index=False, header=False)
# reset the position of the stream variable
stream.seek(0)
# load to data
with conn_info.cursor() as cursor:
cur.copy(copy_str,stream.getvalue())
conn_info.commit()
关于python - 将大型数据帧加载到 Vertica,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54338108/