簡體   English   中英

需要很長時間的批量/多個查詢永遠不會在 Postgres 中完成

[英]bulk/multiple queries that take a long time never finish in Postgres

我在 postgres 中創建了一個 function ,將數據插入到表中。 function 接收一個字符串,並在處理后將值輸入到表中。 我想要的是能夠在 pgAdmin 中多次調用 function 而不是批量運行它們。

示例:在 pgAdmin 我打開我的 sql 查詢 window 並輸入

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:如果您想要某種進度指示器並且需要一次運行一個 select,您可以使用腳本語言中的 DBI 從文件或表中讀取字符串,循環遍歷 function 調用,然后在每次迭代時做一個簡單的控制台打印輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM