0

在我的查询中,我使用 for 循环。每次执行 for 循环时,最后都必须将一些值插入到表中。这很耗时,因为 for 循环有很多记录。因此,每次执行 for 循环时,都会发生插入。在执行for循环后,是否有其他方法可以在末尾执行插入。

For i in 1..10000 loop .... 
    --coding 
    insert into datas.tb values(j,predictednode); -- j and predictednode are variables which will change for every loop
End loop;

而不是每次我想要插入时都插入应该在最后发生。

4

2 回答 2

1

如果您展示如何计算变量,则可以构建如下内容:

insert into datas.tb
select
    calculate_j_here,
    calculate_predicted_node_here
from generate_series(1, 10000)
于 2013-09-14T12:10:05.003 回答
0

一种可能的解决方案是构建一个大VALUES字符串。在Java中,类似

StringBuffer buf = new StringBuffer(100000); // big enough?
for ( int i=1; i<=10000; ++i ) {
    buf.append("(")
       .append(j)
       .append(",")
       .append(predicted_node)
       .append("),"); // whatever j and predict_node are
}
buf.setCharAt(buf.length()-1, ' '); // kill last comma
String query = "INSERT INTO datas.tb VALUES " + buf.toString() + ";"
// send query to DB, just once

不过,事实jpredict_node似乎是不变的让我有点担心。为什么要在 100000 次中放置一个常数?

另一种方法是使用 Postgres 程序语言进行预测,并让数据库本身计算插入时的值。

于 2013-09-18T17:17:54.847 回答