我试图使用SQLite3 shell在某个表中插入15530记录,但是我得到了该错误,我搜索了SQLITE_MAX_COMPOUND_SELECT解决方案,默认为500是原因,但我不知道如何使用Shell更改它。
“错误:复合SELECT中的术语太多了”
http://desmond.imageshack.us/Himg861/scaled.php?server=861&filename=sqlite.jpg&res=landing
INSERT INTO table_name (my_id, my_name) VALUES
(1, 'Aaliyah'),
(2, 'Alvar Aalto'),
(3, 'Willie Aames'),
...
(15530, 'name');
答案 0 :(得分:14)
多值INSERT INTO语法为introduced in SQLite 3.7.11,因此最新版本的SQLite的原始语法很好。在旧版本中,您可以使用alternative syntax。
但是,限制为SQLITE_MAX_COMPOUND_SELECT
cannot be raised at runtime,因此您需要将插入内容拆分为每行500行。这比每个查询插入一行更有效。 E.g。
BEGIN;
INSERT INTO table_name (id, name) VALUES (1, 'foo'), ..., (500, 'bar');
INSERT INTO table_name (id, name) VALUES (501, 'baz'), ..., (1000, 'zzz');
...
COMMIT;
答案 1 :(得分:4)
INSERT INTO
不会这样做。
试试这个:
BEGIN TRANSACTION
INSERT INTO author (author_id, author_name) VALUES (1, 'Aaliyah')
INSERT INTO author (author_id, author_name) VALUES (2, 'Alvar Aalto')
INSERT INTO author (author_id, author_name) VALUES (3, 'Willie Aames')
...
END TRANSACTION