.NET C # вставка в SQLite> 1 миллиона записей в одном пакете - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь вставить более 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()

Спасибо

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