sql >> Database teknologi >  >> RDS >> Mysql

Sammenlign MySQL med CSV og find forskelle

En måde at gøre det på:

(Forudsat at du allerede ved, hvordan man åbner en fil og udfører en forespørgsel.)

Læs først rækker fra din CSV og antag, at data mangler 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'];
}

Hent derefter rækker fra din forespørgsel, og udfyld det array, du oprettede fra CSV'en, i overensstemmelse hermed.

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 ændre rækkefølgen af ​​dette og behandle forespørgselsresultaterne først. Begge ordrer vil fungere, lige så længe du laver opdaterings-/indsætlogikken med den anden datakilde.

Du kan ksort($result); hvis du vil have de flettede værdier i orden, så output $result men du har brug for det.




  1. Opret forbindelse til ekstern MySQL-server med SSL fra PHP

  2. SQLServer vs StateServer for ASP.NET Session State Performance

  3. ORA-01000:maksimale åbne markører overskredet ved brug af Spring SimpleJDBCCall

  4. Tilføj mod_mysql, mod_xml og mod_zlib til apache