sql >> Databasteknik >  >> RDS >> Mysql

Jämför MySQL med CSV och hitta skillnader

Ett sätt att göra det:

(Förutsatt att du redan vet hur man öppnar en fil och kör en fråga.)

Läs först rader från din CSV och anta att data saknas i SQL.

while (($row = fgetcsv($file)) !== FALSE) {
    $num = $row[0];  // or whatever CSV column the value you want is in
    $result[$num] = ['csv' => $num, 'sql' => '', 'status' => 'MISSING IN SQL'];
}

Hämta sedan rader från din fråga och fyll den array som du skapade från CSV-filen i enlighet med detta.

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $num = $row['EAN']; // or whatever your column is named
    if (isset($result[$num])) {
        // This has a value from the CSV, so update the array
        $result[$num]['sql'] = $num;
        $result[$num]['status'] = 'OK';
    } else {
        // This doesn't have a value from the CSV, so insert a new row
        $result[$num] = ['csv' => '', 'sql' => $num, 'status' => 'MISSING IN CSV'];
    }
}

Du kan ändra ordningen på detta och bearbeta frågeresultaten först. Båda beställningarna kommer att fungera, bara du gör uppdaterings-/infogningslogiken med den andra datakällan.

Du kan ksort($result); om du vill att de sammanslagna värdena ska vara i ordning, mata ut $result hur du än behöver.




  1. MySQL SELECT DISTINCT ska vara skiftlägeskänslig?

  2. Oracle SQL Auto Generated Identity Primary Key

  3. Sammanfoga tabell med MAX-värde från en annan

  4. Felet 'Relation existerar inte' efter överföring till PostgreSQL