Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否使用批处理postgres将数据从表复制到表?_Sql_Postgresql_Transactions - Fatal编程技术网

Sql 是否使用批处理postgres将数据从表复制到表?

Sql 是否使用批处理postgres将数据从表复制到表?,sql,postgresql,transactions,Sql,Postgresql,Transactions,我有一个大表,需要将1亿行从它复制到另一个表。 我正在尝试以1小时的间隔批量复制此脚本: DO $$ DECLARE intervalStrart TIMESTAMP := '2019-07-01 00:00:00'::timestamp; intervalEnd TIMESTAMP; stopTime TIMESTAMP :='2019-07-25 00:00:00'::timestamp; BEGIN WHILE (intervalStrart<=stopTim

我有一个大表,需要将1亿行从它复制到另一个表。 我正在尝试以1小时的间隔批量复制此脚本:


DO $$ 
DECLARE
   intervalStrart TIMESTAMP := '2019-07-01 00:00:00'::timestamp;
   intervalEnd TIMESTAMP;
   stopTime TIMESTAMP :='2019-07-25 00:00:00'::timestamp;
BEGIN 
WHILE (intervalStrart<=stopTime) LOOP
        intervalEnd= intervalStrart + interval '1 hour';
        RAISE NOTICE 'Time: %', intervalStrart;
        INSERT INTO marketo.activities_copy(SELECT * from marketo.activities
        WHERE activitydate>=intervalStrart and activitydate<=intervalEnd) 
        ON CONFLICT ON CONSTRAINT activities_copy_pkey 
        DO NOTHING;
        intervalStrart=intervalEnd;
        END LOOP;

END $$;
但当我检查复制表计数时,它仍然是0。看起来此脚本正在事务中执行,并且仅在最后提交。为什么会这样?
如何使它在每次迭代时都写入?

结果表明,默认情况下,函数在它们自己的事务中工作。在PASGRESS 10中,没有办法在中间进行更改,尽管我们可以使用<代码>异常< /Cord>关键字来处理错误。在postgres 11中,有一些新功能程序支持提交。

除非提交数据更改,否则无法从其他会话中看到该表上的更改。@BarbarosÖzhan,谢谢。如何在此处提交更改?我试图添加
BEGIN插入前和
提交之后,但得到一个错误
错误:语法错误在第10行:开始不客气。我不知道plpgsql语法,但我想您可以尝试在
end-loop
子句之前,在
intervalStrart=intervalEnd之后放置commit。将数据插入表时可能会出现问题,请尝试单独执行相同的插入脚本,并检查它是否正在插入correctly@Ajay,我检查过了,插入正确
NOTICE:  Time: 2019-07-01 00:00:00
NOTICE:  Time: 2019-07-01 01:00:00
NOTICE:  Time: 2019-07-01 02:00:00
NOTICE:  Time: 2019-07-01 03:00:00
...