前提・実現したいこと
MYSQL5.7にて、連携されるCSVデータをマスタテーブルに取り込みしているのですが、
CSVの中にないデータを削除をしたいと思っています。
連携されてくるCSV側での対応ができないため、取込側で何とかせざるを得ない状況ですが、
方法として2案考えており、速度的な点を重視して対応ができればと考えています。
どちらが方法がよいのか、また別案があれば教えてください。
なお、データ件数は100万件ぐらいで、テーブルデータ件数もほぼニアリーイコールです。
DB形式はInnoDBになります。
案1:
一度、truncate tableをしてから、Load Dataですべて取り込む。
→ 試したところ削除はすぐだが、取込はIndexの貼り直しがあるので、5分程度かかった。
案2:CSVをワークテーブルに入れて、ワークとマスタを比較して差分データを削除する。
→ まだ試してませんが、結局ワークに入れる際、削除から取込処理が入るため、
全体的に速度が落ちる。マスタ側への影響が少ないだけがメリット。
最初は、LOAD DATA INFILE 'test.CSV' REPLACE INTO TABLE test でやってましたが、
存在しないものは消えないというのがわかって、変更しているところです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/29 03:07
2018/11/29 03:12
2018/11/29 03:30