[C#] Datenverarbeiten

Fisch

Mitglied
Ich habe folgendes Problem. Ich möchte eine monatliche Auswertung aus Tagesateien machen die so ca. 4 MB haben (30 x4 =120MB). Hierbei muss ich teilweise Datensätze rauslöschen brechnen etc.
Jetzt meine Frage, da ich mich auch noch nicht so mit Programmieren auskenne(wobei das Programm ja auch nicht morgen fertig sein muss): Wie gehe ich am Besten vor.
Mein theoretischer Ansatz ist ja so :
Einen Tag einlesen
In ein Array schreiben
Verarbeiten(Löschen, berechnen etc.)
Erechneten Tageswerte speichern
und wieder von vorne
Wenn alle Tagesdateien eingelesen sind Monatsberechnung durchführen.

Macht das Sinn oder komme ich bei so vielen Daten um Datenbanken nicht drumrum.
Geht es Problemlos zu Programmieren automatisch eine nach der anderen Datei in einem Ordner auszulesen.
Was sollte ich beachten oder womit sollte ich mich insbesondere Beschäftigen.
Vielleicht noch zur Erklärung. Es handelt sich um 64Zeichen strings
im Monat bis zu 1,5 Mio, die bearbeitet werden müssen.

Bin für jede Anregung dankbar, allerdings der Tipp erstmal ein Jahr Konsolenanwendungen zu schreiben Hilft mir nicht wirklich weiter;)

Danke

Fisch
 
Original geschrieben von Fisch
Ich habe folgendes Problem. Ich möchte eine monatliche Auswertung aus Tagesateien machen die so ca. 4 MB haben (30 x4 =120MB). Hierbei muss ich teilweise Datensätze rauslöschen brechnen etc.
Jetzt meine Frage, da ich mich auch noch nicht so mit Programmieren auskenne(wobei das Programm ja auch nicht morgen fertig sein muss): W

Wie gehe ich am Besten vor.
Mein theoretischer Ansatz ist ja so :
Einen Tag einlesen
In ein Array schreiben
Verarbeiten(Löschen, berechnen etc.)
Erechneten Tageswerte speichern
und wieder von vorne
Wenn alle Tagesdateien eingelesen sind Monatsberechnung durchführen.

Macht das Sinn oder komme ich bei so vielen Daten um Datenbanken nicht drumrum.
Geht es Problemlos zu Programmieren automatisch eine nach der anderen Datei in einem Ordner auszulesen.
Was sollte ich beachten oder womit sollte ich mich insbesondere Beschäftigen.
Vielleicht noch zur Erklärung. Es handelt sich um 64Zeichen strings
im Monat bis zu 1,5 Mio, die bearbeitet werden müssen.

Bin für jede Anregung dankbar, allerdings der Tipp erstmal ein Jahr Konsolenanwendungen zu schreiben Hilft mir nicht wirklich weiter;)

Danke

Fisch

Bei der menge an Daten empfiehlt es sich eine Datenbank zu nutzen.
Drumherumkommen versteh ich nicht wieso du das willst. Denn geld ausgeben brauch mann nicht für eine Datenbank.
Du kannst ohne probleme per C# OleDbConnection auf sämmtliche Datenbanken zugreifen.
 
Wie HolyFly schon gesagt hat, ist es in solch einem Fall besser eine DB zu verwenden! In C# kannst Du für solche Zwecke ja die ADO.NET verwenden.
 
Das Problem it, das ich von C# ja schon nicht viel Plan habe, aber von Datenbanken noch weniger, ADO.NET z.B. habe ich zwar schonmal gelesen, sagt mir aber nicht so richtig was. Habt ihr da was, wo man sich als anfänger einlesen kann. Momentan läuft das Verarbeiten der Daten über Access, halt jeder Schritt einzeln. Kann man mit C# auch irgendwie Access steuern??

Fisch
 
Was macht Access genau? Hat es da einige VB-Scripts, die etwas machen? Und werden bzw. sind die Daten dort in eine Datenbank abgelegt?

Mit C# bzw. ADO.NET kann man eine MDB (Access-Datenbank) anzapfen bzw. Daten lesen und schreiben!

Wenn Du aber weder von C# noch von Datenbank ne Ahnung hast, ist dieses Projekt zum Anfang etwas gross!

Du kannst aber schrittweise durch kleinere Programme Dich auf das Ziel hinbewegen.

Bespiele:
-Programm in C#, welches die Datei(en) liest, Werte berechnet und einfach auf den Bildschirm ausgibt, wie Du es erwartest!
-Als nächstes Programm in C#, welches die vorhandene Datenbank ausliest und Werte darstellt! Oder sogar Werte in die Datenbank einträgt!
-Gelerntes von Beispiel 1 und 2 zusammensetzten und voila, schon hast Du Dein Programm!!!
 
Also, wenn ich Dich richtig verstehe, räts Du mir auch erstmal so wie ich es vorhatte die Daten einzulesen und zu verarbeiten (ohne Datenbank)und wenn ich denn mal soweit bin mich dann mit Datenbanken zu beschäftigen, richtig??
Kannst Du mir vielleicht noch sagen, was ich beachten sollte?? Ich denke mal z.B. wenn ich alle Daten in ein Array in den Speicher schreiben würde( ca.120MB) würde sich mein Rechner bei mir bedanken,oder??
 
natürlich kann man sowas auch ohne eine datenbank umsetzen (beispielsweise mit csv-dateien), aber der aufwand wird bei grossen datenmengen ziemlich ansteigen. am sinnvollsten ist daher schon die verwendung einer datenbank.
wenn du als datenbanksystem access benutzen willst (für anfänger ziemlich einfach), kannst direkt in der datenbank mit vba programmieren und hast dadurch direkten zugriff auf die daten. für kleine private projekte und zum lernen finde ich persönlich sowas ganz geeignet. wenn man allerdings die funktionsweise von datenbanken verstanden hat, sollte man sich diese technik schnell wieder abgewöhnen.
 
Musst Du wirklich die ganze Datei in ein Array einlesen (120MB - geht dann in die Auslagerungsdatei wenn der Speicher nicht reicht), oder kannst Du die Daten Zeilenweise einlesen, die wichtigen Dinge auslesen bzw. berechnen?

Als erstes musst Du ja erst mal schauen, wie kann ich die Daten lesen! Das kannst Du ja erst mal Zeile für Zeile lesen -> ohne die Daten zu speichern oder zu verarbeiten machen!

Dann kannst Du Dir ja eine Datenbank entwerfen die Deine Daten aufnehmen soll. Also Zeile Lesen -> Daten in die Datenbank schreiben. Hast Du erst mal die Daten in der Datenbank, lässt sich leichter damit arbeiten!
 
Irgenwie hatte ich mir halt vorgestellt, das es schneller geht, wenn ich die Daten z.B. von einem Tag(ca. 4MB) Zeilenweise einlese, die Daten(Zeilen) die ich nicht brauche lösche und den Rest zur Berechnung benutze. Wenn ich die Berechnungen für einen Tag habe könnte ich ja auch die selben Variablen für den nächsten Tag nutzen, so dass ich also nicht 120 MB auf einmal in den Speicher laden muss.
Die Monatsberechnung mache ich dann mit den zwischengespeicherten Tagesergebnissen.
Wenn ich von einer Datei in die andere schreibe, oder in eine Datenbank, dauert dass doch bestimmt länger als wenn das im Speicher geschieht oder nicht?? Aber vielleicht sollte ich wirklich erstmal anfangen und mich nebenbei mal mit Datenbanken beschäftigen.
Übrigens ich verfolge ja 2 Ziele. Einmal das das Programm später läuft und zweitens, dass ich was in C# lerne, deswegen hilft mir das mit VB in Access leider nicht weiter. Wenn ich mir schon 4 Bücher über C# gekauft habe möchte ich das auch lernen;)
 
zum lernen von c# würde ich vorschlagen, dass du erstmal klein anfängst (mit hello world, z.b.) und dich dann später hocharbeitest. ein grosses projekt hat für anfänger einfach den nachteil, dass man irgendwann keine lust mehr hat, weil man an bestimmten stellen nicht weiterkommt.

datenbanken sind auf geschwindigkeit optimiert, also ist es schon sinnvoller datenbanken zu benutzen. ausserdem kann man da direkt auf die daten zugreifen und in tabellenform speichern.
 

Neue Beiträge

Zurück