Проблема SQLite при вставке большого количества записей
Я пытаюсь вставить запись 15530 в определенную таблицу с помощью оболочки SQLite3 , но я получаю эту ошибку , я искал решение SQLITE_MAX_COMPOUND_SELECT, которое по умолчанию равно 500, но я не знаю, как изменить его с помощью оболочки.
"ошибка: слишком много терминов в составном выборе"
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');
2 ответов
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
многозначная вставка в синтаксис была введено в SQLite 3.7.11, поэтому исходный синтаксис отлично подходит для последних версий 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;