Ошибка SQLite: слишком много терминов в составе SELECT

Когда я вставляю слишком много данных в файл базы данных sqlite, возникает ошибка "слишком много терминов в составном SELECT". Я использую "insert into ... select ... union select ... union ...". Я знаю, что слишком много операторов выбора, но мой вопрос: какое максимальное количество терминов в составной инструкции SELECT?

Ответ 1

Составная инструкция SELECT представляет собой два или более оператора SELECT, связанных операторами UNION, UNION ALL, EXCEPT или INTERSECT. Мы называем каждую отдельную инструкцию SELECT в составе SELECT "термином".

Генератор кода в SQLite обрабатывает сложные инструкции SELECT с использованием рекурсивного алгоритма. Чтобы ограничить размер стека, мы поэтому ограничиваем количество членов в составе SELECT. Максимальное количество терминов - SQLITE_MAX_COMPOUND_SELECT, значение по умолчанию - 500. Мы считаем, что это щедрое выделение, так как на практике мы почти никогда не видим, чтобы количество членов в составном элементе превышало отдельные цифры.

Максимальное количество составных терминов SELECT можно снизить во время выполнения, используя интерфейс sqlite3_limit (db, SQLITE_LIMIT_COMPOUND_SELECT, размер).

Для получения дополнительной информации, пожалуйста, проверьте это... http://www.sqlite.org/limits.html

Ответ 2

Нет ограничений на количество используемых вами SELECT. Все, что вам нужно сделать, это проверить, совпадают ли столбцы столбцов с колонками INSERT.