CSV Datei verarbeiten

kerstel

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine CSV Datei mit folgenden Aufbau:

PRODUKT_ID, LIEFERANT_ID, EK, NAME, uvm.

Das sind alles Daten bzw. Konditionen die für 1 Artikel auf x Lieferanten zutreffen (es sind aber nicht nur 1 Artikel in der CSV ;) )

Ich möchte nun diese Konditionen in eine Warenwirtschaft importieren. Aber eben nicht nur die Konditionen sondern auch die Artikel, d.h. wenn meine Zeile so aussieht:

"1234","0815","12,98","Artikelname"
"1234","0816","12,96","Artikelname"
"1234","0817","12,45","Artikelname"

brauche ich für den Import folgende Zeilen:

"1234","Artikelname" -> Artikelimport
"1234","0815","12,98" -> Kondition 1
"1234","0816","12,96" -> Kondition 2
"1234","0817","12,45" -> Kondition 3

soweit so gut. Nun habe ich ja für einen Artikel mehrere Konditionen, was ja bedeutet nach dem Beispiel oben habe ich neben den 3 Konditionen auch 3x den Artikel importiert, was ja bei 100.000 Datensätzen in der CSV 400.000 für den Import macht.

Wie kann ich das nun machen, dass ich immer nur eine Artikelimportzeile habe und dann die entsprechenden Konditionszeilen. Noch zu erwähnen wäre das die Daten in der CSV nicht sortiert sind, sondern die Konditonen in Zeile 100, 1000, 1532 vorkommen können.

Gruß
Kerstel
 
Ich weiß ja nicht wie du importierst, aber idealerweise hast du einen Typ Artikel und einen Type Kondition. Die Artikel werden in einer Collection abgelegt und die Konditionen sind eine Collection des Typs Artikel. Nun kannst du deinen Import starten:

Sehe in der Collection nach, ob es den Artikel mit der Artikel-ID bereits gibt. Wenn ja, dann Konditions-Objekt erstellen und der Auflistung im Artikel hinzufügen, wenn nein, dann neuen Artikel anlegen.

Bzw. hast du ohnehin eigene Zeilen für jeden Artikel und jede Kondition, damit ist es recht einfach, obiges abzubilden.
 
es gibt aber ja keine zeile für den artikel an sich sondern nur die konditionszeile. verstehe nicht so ganz was du meinst. kannst du mir ein code beispiel geben?

Im Prinzip lese ich ja aus einer CSV Zeile meine Artikeldaten und meine Konditionen aus, und wenn es den Artikel schon gibt dann eben nur die Konditionen. Um das ganze dynamisch zu halten (falls sich die CSV mal ändert) definiere ich in einer INI welche Spalte zu was gehört:

[ART]
aa=1
[ADA]
aa=1
ab=3

det hoist, für den Artikelimport (ART) nehme das erste Feld der CSV Zeile und weiße es aa zu, und für den Konditionsimport (ADA) nehme das erste Feld zu aa und das dritte Feld zu ab. Was für die Importdatei zur Warenwirtschaft dann so aussehe:

UEBREþNþSKZþARTþaaþ1234
UEBREþNþSKZþADAþaaþ1234þabþ0815

Ich müsste also die Collection komplett dynamisch aufbauen oder?
 
Zuletzt bearbeitet:
Baue deine Objekte genauso auf wie deine CSV Datei.
Was nun wie ausgelesen wird hat ja nixs mit dem Objekt ansich zu tun.
Aber du weißt ja was du für Werte hast und willst.
 
es kann sich ja aber ändern, und ich will nicht jedesmal mein programm ändern, evtl. kann man das ja auch noch für andere imports verwenden, deswegen die definition über die ini
 
Mach es nicht zu sehr dynamisch.
Wird später nur schwerer zu handeln sein.
Entscheide dich lieber gleich für eine klare Struktur.
 
Zurück