SQL Enterprise Manager에서 실행할 때 "메모리 부족"오류가 발생하는 매우 큰 sql 삽입 파일이 있습니다.큰 파일 - 라인 추가 - 메모리 부족
필자가 보았던 충고는 삽입물에 X 행의 모든 "배치"명령을 "일괄 처리"로 추가하는 것입니다. 내가 파일 및 모든 50 줄을 읽을 수있는 작은 함수를 작성하는 것을 시도하고있다
는 텍스트 행을 추가
나는 내가 그것을 실행하는 경우도 System.OutOfMemoryException를 던지고 작성한 코드를 "GO".
누구든지이 문제를 해결하기 위해 내 코드를 작성하는 더 좋은 방법을 제안 할 수 있습니까?
이 내가 쓴 것입니다 : 당신은 파일을 메모리에서를 작성 후 메모리에있는 파일을 유지하고있어
public static void AddGo()
{
int currentline = 0;
string FilePath = @"C:\Users\trevo_000\Desktop\fmm89386.sql";
var text = new StringBuilder();
foreach (string s in File.ReadAllLines(FilePath))
{
// add the current line
text.AppendLine(s);
// increase the line counter
currentline += 1;
if (currentline == 50)
{
text.AppendLine("GO");
currentline = 0;
}
}
using (var file = new StreamWriter(File.Create(@"C:\Users\trevo_000\Desktop\fmm89386Clean.sql")))
{
file.Write(text.ToString());
}
}
'ReadAllLines' 대신'ReadLines'을 사용하고'StringBuilder'를 사용하는 대신 읽고있는 루프와 동일한 루틴으로 작성하십시오. 그렇게하면 한 번에 두 줄 이상을 메모리에 둘 필요가 없습니다. – CodesInChaos
목표는 무엇입니까? 많은 행을 삽입 하시겠습니까? 왜 파일입니까? SqlCommand를 사용할 수 없습니까? 또는 일괄 가져 오기? – DrKoch
또는 충분한 RAM이있는 컴퓨터에서 응용 프로그램의 64 비트 빌드를 사용하고 일회성 스크립트의 메모리 사용을 최적화하는 것이 별 가치가 없다고 판단 할 수 있습니다. – CodesInChaos