postgresql 如何使用SQL for循环向数据库中插入行?

lztngnrs  于 2023-01-30  发布在  PostgreSQL
关注(0)|答案(4)|浏览(317)

我使用的是Postgres,我有大量的行需要插入到数据库中,它们之间的区别只是增加了一个整数。请原谅我可能会问一个愚蠢的问题,但我并不是一个数据库Maven。有没有可能直接输入一个SQL查询,该查询将使用一个循环以编程方式插入行?
下面是我要做的事情的伪代码示例:

for i in 1..10000000 LOOP
  INSERT INTO articles VALUES(i)
end loop;
ilmyapht

ilmyapht1#

希望我已经理解了您的需求(在8.2上测试):

INSERT INTO articles (id, name)
SELECT x.id, 'article #' || x.id
  FROM generate_series(1,10000000) AS x(id);
u91tlkcl

u91tlkcl2#

在SQL Server中,您可以执行以下操作:

DECLARE @i int
SET @i = 1

WHILE @i<1000000
    BEGIN
        INSERT INTO articles
        VALUES @i
        SET @i=@i+1
    END
jtw3ybtb

jtw3ybtb3#

当然,你不能直接用SQL编写循环,你必须创建一个stored procedure来完成它。
不过这个可以(但可能有人可以让它更干净)

INSERT INTO articles WITH RECURSIVE i AS
(
 SELECT 1 x
  UNION ALL
 SELECT x + 1
  FROM i
 WHERE x < 10000000 
)
 SELECT x
 FROM i;
oxcyiej7

oxcyiej74#

对于那些仍在访问并希望以作者的格式得到适当回答的人,这里是答案。

do $$
begin
for i in 1..1000000 loop
insert into articles values(i);
end loop;
end;
$$;

相关问题