如何在sqlite中复制一行n次?

如何在sqlite中复制一行n次?,sql,sqlite,Sql,Sqlite,对于负载测试,我必须在sqlite数据库中复制表中的一行1000、5000、10000次。 我同意你的说法 INSERT INTO MYTABLE ( created, modified, anotherfield, etc

对于负载测试,我必须在sqlite数据库中复制表中的一行1000、5000、10000次。 我同意你的说法

INSERT INTO MYTABLE (                      
                          created,
                          modified,
                          anotherfield,
                          etc
                      )
                      SELECT created,
                          modified,
                          anotherfield,
                          etc FROM MYTABLE WHERE id = 1;
我可以复制一次。但是,如果能够将它放入一个循环中,以执行该语句n次,那就太好了。 SQLite似乎不支持循环。我发现了一种叫做WITH RECURSIVE的方法,它可能类似于SQLite处理循环的方法。但如果我执行

WITH RECURSIVE
  cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1000)
  <insert_statement_from_above>
insert语句只执行一次。 我做错了什么?我如何才能插入1000、5000、10000行而不必逐个添加它们?谢谢

必须将表交叉连接到递归cte以生成1000行:

WITH RECURSIVE cte(x) AS (SELECT 1 UNION ALL SELECT x + 1 FROM cte WHERE x < 1000)
INSERT INTO MYTABLE (created, modified, anotherfield)
SELECT m.created, m.modified, m.anotherfield 
FROM MYTABLE m CROSS JOIN cte c 
WHERE m.id = 1;
请参见第3行的

使用递归cte的另一种方法:

WITH RECURSIVE cte AS (
  SELECT created, modified, anotherfield, 1 x  
  FROM MYTABLE 
  WHERE id = 1
  UNION ALL 
  SELECT created, modified, anotherfield, x + 1 
  FROM cte 
  WHERE x < 1000
)
INSERT INTO MYTABLE (created, modified, anotherfield)
SELECT created, modified, anotherfield 
FROM cte;