我正在使用Postgres,并且我需要将大量行插入到数据库中,这些行仅在递增的整数方面有所不同。原谅可能是一个愚蠢的问题,但我不是一个数据库大师。 是否可以直接输入将使用循环以编程方式插入行的SQL查询?
我正在尝试做的伪代码示例:
for i in 1..10000000 LOOP
INSERT INTO articles VALUES(i)
end loop;
答案 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;