Синтаксическая ошибка в запросе SQLite - PullRequest
1 голос
/ 23 февраля 2011

Я пытаюсь вставить большое количество записей в базу данных SQLite. Я получаю вышеуказанную ошибку, если пытаюсь использовать C-API sqlite3_exec.

Код выглядит так:

ret = sqlite_exec(db_p,".import file.txt table", NULL, NULL, NULL);

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

Нет ли способа напрямую вставить строку в таблицы без вызова промежуточного API?

Ответы [ 2 ]

3 голосов
/ 23 февраля 2011

.import, скорее всего, недоступен через API. Однако для ускорения вставок есть одна важная вещь: заключить их в транзакцию.

BEGIN;
lots of insert statements here;
COMMIT;

Без этого sqlite необходимо будет записывать в файл после каждой вставки, чтобы сохранить принцип ACID. Транзакция давайте напишем в файл позже навалом.

0 голосов
/ 23 февраля 2011

Ответ на синтаксическую ошибку вполне может состоять в том, что ваши строки не заключены в кавычки в вашем операторе SQL.

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