2017-09-02 22 views
2

我使用python進行編碼,psql用於保存我的數據。 我的問題是,當我寫入數據庫時​​大約需要2-3分鐘。數據的大小約爲1,200,000(行)和3列。使用postgressql加速數據庫中的插入表

插入功能:

def store_data(cur,table_name,data): 
    cur.executemany(
    "INSERT INTO"+" "+table_name+" "+"(name, date,id) VALUES (%s, %s, %s)", 
    [(data[i][0], data[i][1], data[i][2]) for i in xrange(0,len(data))] 
    ) 

    cur.connection.commit() 

任何幫助,如何來加速?提前致謝。

回答

4

使用COPY命令。 Postgres Documentation。還可以查看COPY上的psycopg documentation

某些數字:對3百萬行分開INSERT:3小時。使用COPY:7秒。

+0

它更多更快? – user8058941

+0

添加了一些數字。它們來自我所選擇的數據庫調優類。 –

+0

我將我的數據保存到數組列表中。 – user8058941

1

有一個在優秀 PostgreSQL的文檔詳細章關於"Populating a Database"

除了使用COPY作爲W.Mann建議你可以做更多,如果你有進一步的性能要求:

  • 刪除臨時索引
  • 臨時移除外鍵和檢查約束
  • 增加maintenance_work_mem
  • 增加max_wal_size
  • 禁用WAL歸檔和流複製
  • 運行ANALYZE之後

如果使用pg_restore的,你可以嘗試使用-j選項多處理器系統上運行多個作業並行。並查看上面鏈接的文檔中給出的其他選項。

相關問題