Сравните MySQL с CSV и найдите различия - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть CSV файл с 1 столбцом с именем EAN и MySQL Таблица с столбцом с именем EAN .

Это то, что яхочу сделать сравнение обеих колонок:

CSV ||| MySQL ||| STATUS
123     123       OK
321     321       OK
444               MISSING IN MySQL
        111       MISSING IN CSV

Есть идеи как реализовать с PHP?

1 Ответ

0 голосов
/ 04 декабря 2018

Один из способов сделать это:

(Предполагая, что вы уже знаете, как открыть файл и выполнить запрос.)

Сначала прочитайте строки из CSV и предположите, что данные отсутствуют в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'];
}

Затем извлеките строки из вашего запроса и соответственно заполните массив, созданный из 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'];
    }
}

Вы можете изменить порядок и сначала обработать результаты запроса.,Любой порядок будет работать, если вы выполняете логику обновления / вставки со вторым источником данных.

Вы можете ksort($result);, если хотите, чтобы объединенные значения были в порядке, а затем вывести $resultтебе нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...