sqlite
dbに大量のデータを挿入する必要があります。
私は使用しLinq to Entities
ます。
大量のデータ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)
);
}
try-catch 構造とゴースト タイプを見逃していました。
最善の解決策を見つけるのを手伝ってください!