在Postgres中需要很长时间才能完成的批量/多个查询

在Postgres中需要很长时间才能完成的批量/多个查询

问题描述:

我在postgres中创建了一个将数据插入到表中的函数。该函数接收一个字符串并在处理该值后将其输入到表中。我想要的是能够在pgAdmin中多次调用该函数,而不是批量运行它们。在Postgres中需要很长时间才能完成的批量/多个查询

例: 在pgAdmin的我打开我的SQL查询窗口,键入

select customfunction('string1'); 
select customfunction('string2'); 
     ^
      . 
      . 
      . 
      . 
      v 
select customfunction('string100000000'); 

当我尝试运行此,当我运行约6000线(6000个功能),它才会起作用。如果我在运行时取消它,它不会提交任何内容(甚至不是第一行)。我必须继续将它们分批以完成整个查询。如何在不批量运行的情况下实现这一目标。

我想复制并粘贴整个查询,并等待一切完成。现在,如果我在批处理中运行超过10000行,查询就会无限期地无响应地运行。有一种方法postgres可以提交每行一旦它运行该行?

我也想知道是否有人可以确定查询运行时正在处理什么行。

您是否尝试过配料你的字符串到文件,将文件导入到一个表(我称之为string_table与所谓串一列),并尝试:

select customfunction(string) 
from string_table; 

埃塔:如果你想要一些一种进度指示器,并且需要一次运行一个选择,您可以使用脚本语言中的DBI从文件或表中读取字符串,循环遍历函数调用,然后执行简单的控制台每次迭代打印输出。

有没有一种方法postgres可以提交每行一旦它运行该行?

如果启用了自动提交功能 - 这也是默认设置,那么......您是否在使用begin语句调用前面?如果在拨打您的电话前提交...

此外,请考虑准备好声明或做什么杰克建议。

+0

我不明白。如何在批处理调用中提交每行? – James 2011-06-19 20:09:17

+0

通过类似的循环:'begin;选择 ...;提交;' – 2011-06-20 05:50:41