例えば、Aというテーブルにデータがあって、
後日その更新版のA'というCSVデータが入手されたときに、
Aにキーが存在しないデータは追加、
Aにもともと存在しているデータで、
キーが一致するものに関してはA'のデータで更新
A'に存在しないデータはそのまま残しておく
というような運用がしたいことはままあると思います。
(残さなくてよければ TRUNCATE → LOAD DATA INFILE でいいのでしょうが)
データ量が多い場合は、
いちいち読み込ませるのも非効率ですので、
Aと同じ構造のA'テーブルにA'のデータを読み込ませて、
REPLACE INTO table_A SELECT * FROM table_A' WHERE hoge_id IS NOT NULL;
などとするのがいいのではないかと。
(今回利用したCSVデータはキーが入るべきところに空行が入っているようなお行儀の悪いCSVデータなので、table_Aは hoge_id を PRIMARY にしていますが、 table_A'はそのまま読み込ませています)
INSERT IGNORE INTO
とか
INSERT INTO ON DUPLICATE KEY UPDATE
とかよりドンピシャな動作だと思いました。
REPLACEは
MySQL拡張みたいですね。
(MySQLとMariaDB以外のデータベースエンジンでは利用できないらしい)