大量のSQLを処理する場合(新しいデータ⇒INSERT 重複⇒UPDATE)


APIでデータをダウンロードをし、そのデータをDBに格納する際に現在、
INSERT INTO `sample` (a, b, c) VALUES('1','1','1') ON DUPLICATE KEY UPDATE a=a+1
(データが存在しない場合は挿入し、存在する場合はカラム「a」に1を足す)

として、データの数だけforでデータを回しています。

しかし一度に挿入したいデータ数が数万行の場合もあり、処理に時間が掛かるため、一度取得したデータをCSVなどでダウンロードしてBULK INSERTで挿入をしたら早くできるのでは思ったのですが、

BULK INSERT `sample`
 FROM ‘ファイルのパス’
 WITH (FIELDTERMINATOR = ‘区切り文字’,
ROWTERMINATOR = ‘改行文字列’
)

この場合、挿入は行えるものの、重複したデータが存在する場合のUPDATEが行えませんでした。

「大量のSQLを処理+重複するデータは上書き」できる方法が御座いましたらご教授頂けますと幸いです。

どうぞよろしくお願い致します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:
  • 終了:2012/10/18 17:55:03

回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

updateするタイミングが 後でよいならば、とりあえずワークのテーブルに全部 突っ込んで 後で 更新をかけるというのは どうでしょうか?

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません