RE: «Есть ли более быстрый способ создания операторов вставки для каждой строки данных?»
Во-первых: сократите его до 2 операторов SQL, используя API виртуальной таблицы Sqlite3 , например.
create virtual table vtYourDataset using yourModule;
-- Bulk insert
insert into yourTargetTable (x, y, z)
select x, y, z from vtYourDataset;
Идея заключается в том, что вы реализуете интерфейс C, который читает ваш исходный набор данных и представляет его в SQlite в виде виртуальной таблицы, а затем вы за один раз делаете копию SQL из исходной в целевую таблицу. Звучит сложнее, чем есть на самом деле, и я измерил огромные улучшения скорости таким образом.
Второе: воспользуйтесь другим советом, представленным здесь, то есть настройками прагмы и использованием транзакции.
В-третьих: возможно, посмотрите, сможете ли вы покончить с некоторыми индексами в целевой таблице. Таким образом, у sqlite будет меньше индексов для обновления для каждой вставленной строки