gpt4 book ai didi

function - 在执行 postgresql 函数时提交事务

转载 作者:行者123 更新时间:2023-11-29 11:10:43 25 4
gpt4 key购买 nike

我有 Postgresql 函数,它必须将大约 150 万条数据插入表中。我想要的是我希望看到表格中插入了每条记录。当前,当我尝试处理大约 1000 条记录时发生了什么,只有在执行完整功能后才会填充 get。如果我中途停止该功能,则不会填充任何数据。即使在插入一定数量的记录后停止,如何使记录提交?

最佳答案

这可以使用 dblink 来完成。我展示了一个提交一个插入的示例,您将需要添加 while 循环逻辑并提交每个循环。你可以http://www.postgresql.org/docs/9.3/static/contrib-dblink-connect.html

CREATE OR REPLACE FUNCTION log_the_dancing(ip_dance_entry text)
RETURNS INT AS
$BODY$
DECLARE
BEGIN
PERFORM dblink_connect('dblink_trans','dbname=sandbox port=5433 user=postgres');
PERFORM dblink('dblink_trans','INSERT INTO dance_log(dance_entry) SELECT ' || '''' || ip_dance_entry || '''');
PERFORM dblink('dblink_trans','COMMIT;');
PERFORM dblink_disconnect('dblink_trans');

RETURN 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

ALTER FUNCTION log_the_dancing(ip_dance_entry text)
OWNER TO postgres;

BEGIN TRANSACTION;
select log_the_dancing('The Flamingo');
select log_the_dancing('Break Dance');
select log_the_dancing('Cha Cha');
ROLLBACK TRANSACTION;

--Show records committed even though we rolled back outer transaction
select *
from dance_log;

关于function - 在执行 postgresql 函数时提交事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com