如何解决耗时较长的批量/多次查询在Postgres中永远不会完成
|| 我在postgres中创建了一个将数据插入表中的函数。该函数接收一个字符串,并在处理后将值输入到表中。我想要的是能够在pgAdmin中多次调用该函数,而不是批量运行它们。 例: 在pgAdmin中,我打开我的sql查询窗口并输入select customfunction(\'string1\');
select customfunction(\'string2\');
^
.
.
.
.
v
select customfunction(\'string100000000\');
当我尝试运行此程序时,仅当我运行约6000行(6000个函数)时,它才有效。如果我在运行时取消它,则不会提交任何内容(甚至第一行也不提交)。我必须继续将它们分成批处理以完成整个查询。我如何才能做到这一点而无需分批运行它们。
我想复制并粘贴整个查询,然后等到一切完成。现在,如果我成批运行10000行以上,查询将无限期地运行,并且没有响应。 postgres是否有办法在运行每一行后提交每一行?
我还想知道在查询运行时是否有人可以确定正在处理的行。
解决方法
postgres是否有办法在运行每一行后提交每一行?
如果启用了自动提交,则不会执行此操作-这也是默认设置,所以...您是否在调用之前加上begin语句?如果是这样,请在拨打电话之前提交...
另外,请考虑准备语句或执行杰克建议的操作。
, 您是否尝试过将字符串批处理到文件,将文件导入到表中(我将使用名为string的单个列将其称为string_table)并尝试:
select customfunction(string)
from string_table;
ETA:如果您需要某种进度指示器并且需要一次运行一次选择,则可以使用脚本语言的DBI来从文件或表中读取字符串,并在循环中遍历函数调用,然后在每次迭代时进行简单的控制台打印输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。