如何使用SQL for循环将行插入数据库?

时间:2010-09-21 20:02:36

标签: sql postgresql

我正在使用Postgres,并且我需要将大量行插入到数据库中,这些行仅在递增的整数方面有所不同。原谅可能是一个愚蠢的问题,但我不是一个数据库大师。 是否可以直接输入将使用循环以编程方式插入行的SQL查询?

我正在尝试做的伪代码示例:

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

3 个答案:

答案 0 :(得分:68)

希望我明白你的需要(在8.2上测试):

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

答案 1 :(得分:14)

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

DECLARE @i int
SET @i = 1

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

答案 2 :(得分:3)

Afaik,你不能直接用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;