LOAD DATA INFILE sql 関数を使用して、CSV ファイルから MYSQL DB にデータを挿入する PHP ファイルがあります。
CSV データが重複している場合、DB テーブルのインデックス規則 (一意) により、挿入されません。
$sql = "LOAD DATA LOW_PRIORITY LOCAL INFILE
'" . $makes_file . "' IGNORE
INTO TABLE make
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' (make, img_url)";
$link->query($sql) or die(mysqli_error($link));
何らかの理由で、テーブルの自動インクリメントがこのプロセスから正しくありません。
そのため、次のコードを使用してこれを修正しました。
$get_max = $link->query("SELECT max(id) as max FROM `make` LIMIT 1");
while ($r = $get_max->fetch_assoc()) {
$link->query("ALTER TABLE `make` AUTO_INCREMENT = " . ($r['max'] + 1)) or
die(mysqli_error($link));
}
だから誰かが知っているなら:
- LOAD DATA sql または
- 自動インクリメントを max(id) +1 に設定する「きれいな」方法がある場合
ありがとう