Postgresql - INSERT INTO inside WHILE 循环抛出 SQL 错误 [42P01]

Postgresql - INSERT INTO inside WHILE LOOP Throwing SQL Error [42P01]

提问人:Ctrl Alt Elite 提问时间:5/3/2023 更新时间:5/3/2023 访问量:72

问:

我们有一个查询,它将 3.5 亿条记录插入到新表中。我们没有一次全部插入它们,而是将 Insert 查询放在 While 循环中。每次迭代将插入大约 100 万条记录。 我们分别测试了 While 循环和 Insert,两者都有效。但是,当我们将两者组合在一起时,查询会引发以下错误:

SQL 错误 [42P01]:错误:关系“test_artist”不存在 其中:PL/pgSQL 函数inline_code_block第 6 行的 SQL 语句

我们知道这张表是存在的。我们已经对这个错误进行了研究,但到目前为止,我们还没有找到修复它的答案。

下面是查询的简化版本,即 While 循环和 Insert 的组合。 谢谢!

do $$
declare 
   counter integer := 0;
begin
   while counter < 5 loop
    insert into test_artist (record_id, name)
    values('2627', 'el tri');
      counter := counter + 1;
   end loop;
end$$;
postgresql while-loop sql-insert

评论

0赞 Jishan Shaikh 5/3/2023
表“test_artist”不存在。请确保数据库中的表名正确无误。
2赞 Pavel Stehule 5/3/2023
这个错误是干净的 - 也许你使用不同的数据库、不同的服务器或不同的架构,而不是你想象的。
0赞 Ctrl Alt Elite 5/3/2023
@JishanShaikh 我们确保表名正确无误,没有任何大写字母或没有用引号括起来。
0赞 Ctrl Alt Elite 5/3/2023
@PavelStehule 我们是 PostgreSQL 的新手,我们尝试像这样限定名称:db_name.schema_name.test_artist,但仍然出现错误。还有其他方法可以做到这一点吗?
1赞 Adrian Klaver 5/3/2023
为什么不使用 COPY

答: 暂无答案