php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
2 CSV Dateien vergleichen und bei Übereinstimmung zusammenführne und speichern


 
kallmas
18-04-2016, 23:09 
 
Hallo,

ich habe folgendes Problem.
Und zwar habe ich 2 CSV Dateien in denen sich die gleich Anzahl Spalten, aber nicht die gleiche Anzahl Zeilen befinden.
In beiden sind in identischen Spalten auch ggf. identische Daten. Diese möchte ich prüfen und wenn welche gefunden sind möchte ich das bei jeder Übereinstimmung die ID aus Datei 1 gegen die ID aus Datei 2 getauscht wird.
in etwa so.

CSV1:


ID SKU Cat Price
0 12345678 Clothes 10.00
0 12345678 Clothes 10.00
0 87654321 Bath 5.00


CSV 2sieht etwa so aus:


ID SKU Cat Price
321 12345678 Clothes 10.00
532 87654321 Bath 5.00


Und das Ergebnis in einer neuen CSV sollte dann so aussehen:


ID SKU Cat Price
321 12345678 Clothes 10.00
321 12345678 Clothes 10.00
532 87654321 Bath 5.00



Ich kann mir zwar den Inhalt beider Dateien anzeigen lassen, aber die neu erstellte CSV bleibt dabei leer.


$row = 0;
$fp = fopen('updated.csv', 'w');

$csvFile = "Daten1.csv";
$firstRowHeader = true;
$maxRows = 20000;

$handle = fopen($csvFile, "r");
$counter = 0;

echo "<table class=\"csvTable\">";

while(($data = fgetcsv($handle, 20000, ";")) && ($counter < $maxRows)) {

echo "<tr>";

if(($counter == 0) && $firstRowHeader) {

echo "<th>EID</th>";
echo "<th>SKU</th>";
echo "<th>Cat</th>";
echo "<th>Price</th>";

} else {

echo "<td>".$data[0]."</td>";
echo "<td>".$data[1]."</td>";
echo "<td>".$data[2]."</td>";
echo "<td>".$data[3]."</td>";
echo "<td>".$data[4]."</td>";

}

echo "</tr>";

$counter++;

}

echo "</table>";

$csvFile2 = "Daten2.csv";
$firstRowHeader2 = true;
$maxRows2 = 20000;

$handle2 = fopen($csvFile2, "r");
$counter2 = 0;

echo "<table class=\"csvTable\">";

while(($data2 = fgetcsv($handle2, 20000, ";")) && ($counter2 < $maxRows2)) {

echo "<tr>";

if(($counter2 == 0) && $firstRowHeader2) {

echo "<th>ID</th>";
echo "<th>SKU</th>";
echo "<th>Cat</th>";
echo "<th>Price</th>";

} else {

echo "<td>".$data2[0]."</td>";
echo "<td>".$data2[1]."</td>";
echo "<td>".$data2[2]."</td>";
echo "<td>".$data2[3]."</td>";
echo "<td>".$data2[4]."</td>";

}
echo "</tr>";

$counter2++;

}

echo "</table>";

$oldID = $data1[0];
$newID = $data2[0];
$data =$data2;

if($data[1] == $data2[1]){
fputs($fp, str_replace($oldID, $newID, $data2 ."\n"));
}

fclose($fp);


Ich bin da mit meinem bisschen (PHP)Latain am ende. :(

 
h3ll
19-04-2016, 00:05 
 
2 CSV Dateien vergleichen und bei Übereinstimmung zusammenführne und speichern - PHP Forum: phpforum.de (http://phpforum.de/forum/showthread.php?t=283164)

2 CSV Dateien vergleichen und bei Übereinstimmung zusammenführne und speichern - php.de (http://www.php.de/forum/webentwicklung/php-einsteiger/1473334-2-csv-dateien-vergleichen-und-bei-%C3%BCbereinstimmung-zusammenf%C3%BChrne-und-speichern)

 
wahsaga
19-04-2016, 09:57 
 
Crossposting ist unerwünscht (http://www.php-resource.de/forum/php-developer-forum/announcements.html#crossposting)

*close*

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:23 Uhr.