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) ); }
내가 놓친 try-catch 구조와 유령 종류.
최고의 솔루션을 찾도록 도와주세요.
모든 행 또는 4000 행을 절약하는 것은 꽤 극단적 인 분할입니다. 100, 200의 절약을 시도 했습니까? –
물론 생산성이 떨어집니다. 그러나 4000은 임의로 선택됩니다.) 그러나 빠르게 작동합니다! – artzub