2017-02-02 8 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)してください。 [ref](https://meta.stackoverflow.com/a/360251/8371915) – user8371915

関連する問題