在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语句调用前面?如果在拨打您的电话前提交...
此外,请考虑准备好声明或做什么杰克建议。
我不明白。如何在批处理调用中提交每行? – James 2011-06-19 20:09:17
通过类似的循环:'begin;选择 ...;提交;' – 2011-06-20 05:50:41