Ich habe einen Code in C# entwickelt, der Daten aus der CSV-Datei in eine Datentabelle kopiert. Die CSV-Datei enthält 5 Millionen Zeilen und ich lese Zeile für Zeile die Zeilen, um Speicherprobleme zu vermeiden. Ich frage mich, warum ich immer noch OutOfMemory Exception bekomme. Ich habe breakPoints hinzugefügt, um sicherzustellen, dass die richtigen Strings in meine Variablen kopiert werden und sie korrekt funktionieren. Irgendwelche Ideen?'System.OutOfMemoryException' beim Kopieren von CSV-Datei in Datentabelle
int first_row_flag = 0; //first row is column name and we dont need to import them
string temp;
foreach (var row in File.ReadLines(path3))
{
if (!string.IsNullOrEmpty(row))
{
int i = 0;
if (first_row_flag != 0)
{
dt.Rows.Add();
foreach (string cell in row.Split(','))
{
if (i < 9)
{
temp = cell.Replace("\n", "");
temp = temp.Replace("\r", "");
dt.Rows[dt.Rows.Count - 1][i] = temp;
i++;
}
}
}
else
{
first_row_flag++; //get rid of first row
}
}
}
Die Anzahl der Spalten in jeder Zeile ist 9. Das ist, warum ich i verwenden, um sicherzustellen, dass ich nicht unerwartete Daten in der 10. Spalte lesen. Hier
ist der Stack-Trace:
Sie laden alle diese Daten gleichzeitig in eine DataTable? Scheint so, als würde das eine Menge Speicher verbrauchen .... – mason
du fügst immer noch hinzu und fügst und fügst einer (ich vermute) Datentabelle hinzu. – Kritner
Wie genau hilft das Lesen Zeile für Zeile hier, wenn Sie noch alle Zeilen im Speicher halten? – decPL