sqlite
dbに大量のデータを挿入する必要があります。
私はLinq to Entities
を使用します。
Linqと大量のデータを追加
大量のデータを追加することに問題があります。1M +
メモリが不足しているか、または非常に長い時間です。
// query - IQueryable of DbfRecord
// db - ObjectContext
int i = 0;
foreach (var item in query) {
db.AddToKladrs(new Kladr() {
Id = item.GetField(0),
ParentId = item.GetField(1),
RegionId = item.GetField(3),
Name = item.GetField(2),
Index = item.GetField(4)
});
if(++i % 4000 == 0)
db.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
}
このコード - 集中的な資源が、非常に遅いない:速いが、多くのメモリを必要とする -
このコード
// query - IQueryable of DbfRecord
// db - ObjectContext
foreach (var item in query) {
db.ExecuteStoreCommand("insert into [Kladr] values({0}, {1}, {2}, {3}, {4})",
item.GetField(0),
item.GetField(1),
item.GetField(3),
item.GetField(2),
item.GetField(4)
);
}
私は逃しましたトライキャッチ構造とゴーストタイプがあります。
最高のソリューションをお探しください。
すべての行または4000行を節約することはかなり極端な分割です。あなたは100、または200のように節約しようとしましたか? –
もちろん、生産性が低下します。しかし4000は無作為に選択されていますが、速く動作します! – artzub