J'utilise Postgres, et j'ai un grand nombre de lignes qui doivent être insérées dans la base de données, qui ne diffèrent que par un entier incrémenté. Pardonnez ce qui peut être une question stupide, mais je ne suis pas vraiment un gourou de la base de données. Est-il possible de saisir directement une requête SQL qui utilisera une boucle pour insérer par programmation les lignes?
Exemple en pseudo-code de ce que j'essaie de faire:
for i in 1..10000000 LOOP
INSERT INTO articles VALUES(i)
end loop;
J'espère avoir compris ce dont vous avez besoin (testé sur 8.2):
INSERT INTO articles (id, name)
SELECT x.id, 'article #' || x.id
FROM generate_series(1,10000000) AS x(id);
Dans SQL Server, vous pouvez faire:
DECLARE @i int
SET @i = 1
WHILE @i<1000000
BEGIN
INSERT INTO articles
VALUES @i
SET @i=@i+1
END
Afaik, vous ne pouvez pas écrire une boucle directement en SQL, vous devez créer un procédure stockée pour le faire.
Cela suffira cependant (mais quelqu'un peut probablement le rendre plus propre)
INSERT INTO articles WITH RECURSIVE i AS
(
SELECT 1 x
UNION ALL
SELECT x + 1
FROM i
WHERE x < 10000000
)
SELECT x
FROM i;