2017-02-05 3 views
1

Ich programmiere gerade eine "Suchmaschine" in C# für ein Spiel, von dem ich sehr große (3GB und mehr!) .csv und .json (l) Dateien bekomme, muss ich parse sie, aber es nimmt sehr viel RAM auf ... was sind gute Möglichkeiten, sie zu parsen (ich brauche alle Daten für die Übertragung in eine DB)?Sehr große CSV und JSON Dateien lesen

Beispiel CSV:

id,station_id,commodity_id,supply,buy_price,sell_price,demand,collected_at 
1,1,5,0,0,315,532,1486247405 
2,1,6,0,0,6795,38,1486247405 
3,1,7,0,0,527,318,1486247405 

Unfortunatly kein json Beispiel, aber es ist ein Array von OBJs, die die Daten enthalten.

+0

Können Sie kurze Beispiele von 'csv'- und' json'-Dateien bereitstellen? Und auch ein Code, den Sie bereits haben. –

+0

@http: //stackoverflow.com/users/283606/aleksandr-ivanov erste Zeile des CSV ist die Reihenfolge (nach der Dokumentation dieser Reihenfolge kann sich ändern!) Und die anderen Zeilen sind die genannten Daten: – zettymaster

+0

ID, Station_ID, Ware_ID , versorgung, kauf_preis, verkauf_preis, nachfrage, gesammelt_at 1,1,5,0,0,315,532,1486247405 2,1,6,0,0,6795,38,1486247405 3,1,7,0,0,527,318,1486247405 – zettymaster

Antwort

1

Ich verwendete Microsoft.VisualBasic.FileIO.TextFieldParser und es war schnell genug für eine 2 GB .CSV-Datei.

using (TextFieldParser sr = new TextFieldParser(datapath) 
     { 
      Delimiters = new string[1] { "," }, 
      HasFieldsEnclosedInQuotes = true; 
     }) 
{ 
    string[] values = sr.ReadFields(); 
    while (values != null) 
    { 
     // .... 
     values = sr.ReadFields(); 
    } 
} 

Ich hoffe, es hilft.