我试图使用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');
Run Code Online (Sandbox Code Playgroud)
Dan*_*son 14
SQLite 3.7.11中引入了多值INSERT INTO语法,因此最新版本的SQLite的原始语法很好.在旧版本中,您可以使用其他语法.
但是,SQLITE_MAX_COMPOUND_SELECT 在运行时不能提高限制,因此需要将插入分成每行500行的批处理.这比每个查询插入一行更有效.例如
BEGIN;
INSERT INTO table_name (id, name) VALUES (1, 'foo'), ..., (500, 'bar');
INSERT INTO table_name (id, name) VALUES (501, 'baz'), ..., (1000, 'zzz');
...
COMMIT;
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
http://www.sqlite.org/lang_insert.html
| 归档时间: |
|
| 查看次数: |
7542 次 |
| 最近记录: |