Я пытаюсь вставить более 1 миллиона записей в базу данных SQLite из кода C #. Если я делаю это один за другим, это займет вечность. Оператор вставки одинаков, только с разными параметрами. Интересно, есть ли что-то подобное в Java PreparedStatement st.addBatch(sql)
. Кроме того, я использую Entity Framework, поэтому мне было интересно, есть ли у него какой-либо способ делать пакетные вставки. Если нет, то любой другой способ будет работать до тех пор, пока я смогу сделать это за разумное количество времени.
Я пытался сделать это, используя транзакции, которые, казалось бы, работали, но задавался вопросом, есть ли какой-либо другой правильный способ сделать это. Для меня было бы лучше иметь это в Entity Framework.
Вот что у меня есть, чтобы заставить его работать:
SQLiteCommand com = new SQLiteCommand("insert into Entrys(ID,KeyEntry,Password) values(@id,@key,@pass)", con);
com.Parameters.Add("@id", DbType.Int64);
com.Parameters.Add("@key", DbType.Int64);
com.Parameters.Add("@pass", DbType.Int64);
com.Prepare();
SQLiteTransaction tr = con.BeginTransaction();
com.Transaction = tr;
int limit = 1000000;
for(int i=1;i<limit;i++)
{
com.Parameters[0].Value = 1;
com.Parameters[1].Value = i;
com.Parameters[2].Value = i;
com.ExecuteNonQuery();
}
tr.Commit();
con.Close()
Спасибо