簡體   English   中英

在設置了PostgreSQL的情況下,psycopg2能以多快的速度將大量數據寫入AWS的RDS實例?

[英]How fast can psycopg2 write a HUGE amount of data to an AWS' RDS instance with PostgreSQL set up?

我試圖將價值15 Mb的數據寫入具有PostgreSQL數據庫的RDS實例,但是我發現這確實很慢...花了大約15分鍾以上的時間才能將所有數據完全寫入實例。 任何人都曾將大量數據逐行寫入RDS實例嗎? 謝謝!

# Assuming the table is already created
def handler(file_with_many_many_rows, con):
    cur = con.cursor()
    reader = csv.reader(f)

    for i, line in enumerate(reader):
        vals = ("val1", "val2", "val3")
        insert_query = "INSERT INTO table_test VALUES (%s, %s, %s);"
        cur.execute(insert_query, vals)

    con.commit()

問題

我幾乎可以確定您要執行的查詢數量存在問題。 通過分析方法的復雜性,我可以假設它是O(n),因為您有15 * 10 ^ 6行,執行時間大約為15分鍾。

該怎么辦?

將所有數據拆分為多個塊,並為每個事務插入多個數據實例。 您可以從1000行開始實驗,也可以根據數據大小創建限制,例如,計算從csv文件導出到postgres db的每行的行大小。

摘要

如果直接使用psycopg2 ,請嘗試使用executemany方法一次插入多行。 這是如何使用executemany而不拆分要插入的塊的示例

使用熊貓

另外,您也可以使用pandas做同樣的事情,這對管理時間序列數據非常有用,但是您可以按照此asnwer 導入a-csv-file-into-a-sqlite3-database-table中所述的方式將其用於您的目的。 使用 pandas.read_csvpandas.DataFrame.to_sql 使用python

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM