如何使用SQL for循环将行插入数据库?
我正在使用Postgres,并且我有大量需要被插入到数据库中的行,这些行的差别仅在于递增的整数。 原谅可能是一个愚蠢的问题,但我不是一个数据库大师。 是否有可能直接input一个SQL查询,将使用循环编程插入行?
在我想要做的伪代码中的例子:
for i in 1..10000000 LOOP INSERT INTO articles VALUES(i) end loop;
希望我已经明白你需要什么(8.2testing):
INSERT INTO articles (id, name) SELECT x.id, 'article #' || x.id FROM generate_series(1,10000000) AS x(id);
在SQL Server中,你可以这样做:
DECLARE @i int SET @i = 1 WHILE @i<1000000 BEGIN INSERT INTO articles VALUES @i SET @i=@i+1 END
Afaik,你不能直接用SQL写一个循环,你必须创build一个存储过程才能做到这一点。
这样做虽然(但有人可能会使它更干净)
INSERT INTO articles WITH RECURSIVE i AS ( SELECT 1 x UNION ALL SELECT x + 1 FROM i WHERE x < 10000000 ) SELECT x FROM i;