Динамический способ вставки данных в таблицу SQLite при изменении количества столбцов - PullRequest
1 голос
/ 05 марта 2019

Я работаю над сценарием, использующим SQLite, в котором наблюдается изменение количества столбцов, доступных для вставки в таблицу, которую я создаю для последующего объединения.

Таблица, в которую я создан для вставки данных, содержит 97 столбцов, данные, поступающие из моего канала, могут варьироваться от 80 до 97-го столбца.

Я получаю ошибку SQLITE_ERROR: table allPositionsTable has 97 columns but 80 values were supplied, и я пытаюсь ее избежать, выяснив способ, где этого не происходит.

Есть ли какие-нибудь обходные пути или приемы, которые я могу использовать, чтобы иметь функцию SQLite, чтобы она всегда включала столбцы, для которых нет данных, или динамически не включала их, чтобы ошибка исчезла?

1 Ответ

2 голосов
/ 05 марта 2019

Я получаю ошибку SQLITE_ERROR: table allPositionsTable has 97 columns but 80 values were supplied, которую я пытаюсь избежать, выяснив способ, где этого не происходит.

Это происходит потому, что вы используетесписок столбцов по умолчанию (т.е. без указания столбцов, в которые должны быть помещены значения)

То есть вы бы кодировали эквивалент INSERT INTO your_table VALUES(......., поэтому при отсутствии списка столбцов вы говоритечто вы предоставите значение для всех столбцов в таблице и, следовательно, сообщение, когда значение или значения отсутствуют.

То, что вы хотите сделать, это использовать INSERT INTO your_table_name (your_comma_separated_list_of_columns_to_be_inserted) VALUES(.......

  • где your_table_name и your_comma_separated_list_of_columns_to_be_inserted будут заменены соответствующими значениями.

См. выделенный раздел синтаксиса INSERT, который можно найти в SQLКак понял SQLite - INSERT

enter image description here

и соответствующий раздел по вышеуказанной ссылке: -

Первая форма (шКлючевое слово VALUES) создает одну или несколько новых строк в существующей таблице.

Если список имен столбцов после имени таблицы опущен, то число значений, вставляемых в каждую строку, должно совпадать с количеством столбцов в таблице.

В этом случае результат вычисления крайнего левого выражения из каждого члена списка VALUES вставляется в крайний левый столбец каждой новой строки и т. Д. Для каждого последующего выражения.

Если указан список имен столбцов, то количество значений в каждом члене списка VALUE должно соответствовать количеству указанных столбцов.

Каждый из именованных столбцов новой строки заполняется результатами вычисления соответствующего выражения VALUES.

Столбцы таблицы, которые не отображаются в списке столбцов, заполняются значением столбца по умолчанию (заданным как часть оператора CREATE TABLE) или значением NULL, если значение по умолчанию не указано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...