sql >> Databáze >  >> RDS >> Mysql

Porovnejte MySQL s CSV a najděte rozdíly

Jeden způsob, jak to udělat:

(Za předpokladu, že již víte, jak otevřít soubor a provést dotaz.)

Nejprve si přečtěte řádky z vašeho CSV a předpokládejte, že data v SQL chybí.

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'];
}

Poté načtěte řádky z dotazu a podle toho vyplňte pole, které jste vytvořili z CSV.

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'];
    }
}

Můžete změnit pořadí tohoto a nejprve zpracovat výsledky dotazu. Obě objednávky budou fungovat, pokud provedete logiku aktualizace/vložení s druhým zdrojem dat.

Můžete ksort($result); pokud chcete, aby byly sloučené hodnoty v pořádku, vypište $result nicméně musíte.




  1. Srovnat strom v MySQL?

  2. Jak odstranit úvodní a koncové mezery v MySQL

  3. Jak získat COUNT dotaz v django

  4. Smazat pomocí Join v MySQL