У меня есть приложение, в котором я постоянно обновляю 3 таблицы базы данных SQLite3. Я постоянно пополняюсь новыми значениями, которые создаются с помощью самого приложения. При нажатии кнопки я создаю файл дампа, который начинается с:
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
За ним следует запрос CREATE TABLE tableName (rows and their type here);
. Затем я запрашиваю все записи в базе данных, а затем получаю каждую строку, добавляя ее после запроса CREATE_TABLE
в формате INSERT INTO table values (values here);
. Затем я делаю это для двух других таблиц в последовательности.
Код затем архивируется и загружается на онлайн-сервер.
Эта настройка работает прямо сейчас, однако я заметил, что со временем, когда записи увеличиваются примерно до 200-300 строк для одной таблицы и почти до 1000 строк для одной таблицы, первые 5-10 строк не будут включены в файл дампа.
Кажется, что просто запросить строки данных не работает. Есть случаи, когда строки данных не выбираются так, как они предназначены.
У меня также есть догадка, что, поскольку я делаю это в последовательности, а не в фоновом режиме, может быть вероятность того, что код продолжит загрузку файла дампа, даже если дамп данных еще не был правильно собран. .
Есть ли способ надежно получить все строки данных из таблицы? Я пытался проверить документы SQLite для Android на предмет чего-то похожего на их команду .dump для Терминала, но я не добился успеха.