sql >> データベース >  >> RDS >> Mysql

MySQLをCSVと比較し、違いを見つけます

    それを行う1つの方法:

    (ファイルを開いてクエリを実行する方法をすでに知っていると仮定します。)

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

    この順序を変更して、クエリ結果を最初に処理することができます。 2番目のデータソースで更新/挿入ロジックを実行する限り、どちらの順序でも機能します。

    ksort($result);ができます マージされた値を順番に並べたい場合は、$resultを出力します。 ただし、必要があります。




    1. freeTDSはその構成を使用していません

    2. このPHPMySQL登録フォームが機能しないのはなぜですか?

    3. MySQLの別のテーブルに存在しない行を表示する方法

    4. SQL Serverは、暗黙の日時変換の形式をどのように決定しますか?