2017-02-02 51 views
0

我想盡可能快地在postgres表中插入許多參數。libpqxx:如何綁定參數數組

現在我正在浪費太多的時間來逐個綁定參數。代碼看起來差不多是這樣:

pqxx::connection my_connection(c_string); 
my_connection.prepare("insert_to_db", "INSERT INTO t (id, name) VALUES ($1, $2)); 

pqxx::work W(my_connection); 
for (int i = 0; i < 10000; i++) 
{ 
    W.prepared("insert_to_db")(i)("Max").exec(); 
} 
W.commit(); 

正如我所看到的,commit 10 000元取0.001秒或更少,但結合時間約10秒。

我想將所有參數綁定爲一個數組值。如何使用pqxx來做到這一點? 或者有更好的方法來最小化時間?

+0

[用COPY命令相關的函數(https://www.postgresql.org/docs/current/static/libpq-copy.html) – Abelisto

回答

0
pqxx::connection c; 
pqxx::work w(c); 
c.prepare("prep", "select stored_proc($1::text[])"); 
auto r = w.prepared("prep")("{v1, v2}").exec(); 
+0

謝謝你爲這個代碼片段,這可能會提供一些有限,立即幫助。一個[正確的解釋](https://meta.stackexchange.com/q/114762)將通過說明爲什麼這是一個很好的解決方案,並使其對未來的讀者更有用,從而大大提高其長期價值,類似的問題。請[編輯](https://meta.stackoverflow.com/posts/360251/edit)您的答案添加一些解釋,包括您所做的假設。 [參考文獻](https://meta.stackoverflow.com/a/360251/8371915) – user8371915