【问题标题】:Loading large dataframe to Vertica将大型数据框加载到 Vertica
【发布时间】:2019-01-24 01:24:40
【问题描述】:

我有一个相当大的数据框(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 来完成如此大的负载,但还没有找到一个好的工作示例。

【问题讨论】:

    标签: python pandas vertica


    【解决方案1】:

    经过大量试验和错误......我发现以下内容对我有用。

       # 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() 
    

    【讨论】:

    • 速度怎么样?
    猜你喜欢
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2018-12-14
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多