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