Datensätze von zwei CSV Dateien ergänzen

zernicht0r

Grünschnabel
Hallo,

also ich habe folgendes Problem:
Ich habe zwei Dateien (csv), eine mit ca 1000, die andere mit genau 3054 Datensätzen.
In beiden Dateien findet sich eine eindeutige Kennung des Datensatzes (onkz und asb nummer). Meine Aufgabe ist es, alle 1000 Datensätze aus Datei1 mit den zugehörigen Daten aus Datei2 zu ergänzen, sowie einen ausgewählten Teil der Daten aus Datei2 hinzuzufügen.

Ich habe hierzu zunächst ein Array (daten[]) mit den Elementen aus Datei1 gefüllt.
Im folgenden verwende ich einen BufferedReader(brPl) um Datei2 einzulesen und die unten beschriebene for-Schleife + if-Bedingung um Datensätze zu ergänzen.

Code:
while((inputline = brPl.readLine()) != null)
{
	String [] temp = inputline.split(";");
	for (int i = 0; i<dataCount; i++)
	{
		if(dataCount == daten.length) resize();			
					
		if((daten[i].getOnkz() == Integer.parseInt(temp[0])) && (daten[i].getAsb()==Integer.parseInt(temp[1])))
		{
			daten[i].setGesamt(Integer.parseInt(temp[2]));
			daten[i].setFrei(Integer.parseInt(temp[3]));
					
			System.out.println ("BVH ergänzt nr: " + j);
			j++;
					
		}
		else
		{
			nVerfuegbar = 1 - Double.parseDouble(temp[3]) / Double.parseDouble(temp[2]);
			karten = Double.parseDouble(temp[2])/24;
			if(nVerfuegbar >= 0.75)
			{
				daten[dataCount] = new Data();
				daten[dataCount].setOnkz(Integer.parseInt(temp[0]));
				daten[dataCount].setAsb(Integer.parseInt(temp[1]));
				daten[dataCount].setGesamt(Integer.parseInt(temp[2]));
				daten[dataCount].setFrei(Integer.parseInt(temp[3]));
				dataCount ++;
	//			System.out.println ("ASB eingetragen NVerfuegbar: " + temp[0] + " " + temp[1]);
				break;
			}
			if(karten == 1)
			{
				daten[dataCount] = new Data();
				daten[dataCount].setOnkz(Integer.parseInt(temp[0]));
				daten[dataCount].setAsb(Integer.parseInt(temp[1]));
				daten[dataCount].setGesamt(Integer.parseInt(temp[2]));
				daten[dataCount].setFrei(Integer.parseInt(temp[3]));
				dataCount ++;
	//			System.out.println ("ASB eingetragen Karte: " + temp[0] + " " + temp[1]);
				break;
			}
			if((Integer.parseInt(temp[3]) <= 5) && (Integer.parseInt(temp[3]) > 0))
			{
				daten[dataCount] = new Data();
				daten[dataCount].setOnkz(Integer.parseInt(temp[0]));
				daten[dataCount].setAsb(Integer.parseInt(temp[1]));
				daten[dataCount].setGesamt(Integer.parseInt(temp[2]));
				daten[dataCount].setFrei(Integer.parseInt(temp[3]));
				dataCount ++;
						
				break;
			}
		}
	}
}

Interessant ist, glaube ich, der Code bis zum else-Zweig. Habe aber vorsichtshalber mal ein wenig mehr mit reingepackt.

So nun zu dem Problem:
Es werden insgesamt 218 der >1000 Datensätze ergänzt, wobei eigentlich nahezu 100% gefunden werden müssten. Durch die weiteren if-Bedingungen des else-Zweiges werden auch Datensätze neu eingefügt, die in dem onkz/asb Vergleich hätten ergänzt werden müssen.


Ich bedanke mich schonmal für alle Antworten und hoffe, ich habe das Problem eindeutig geschildert.
 
Zurück