シェルスクリプトで複数データを一括UPDATEする

2015年3月15日日曜日

SQL シェルスクリプト

さて、どうして"行区切りのデータを適当な行数でまとめる"なんてことがしたかったというと
シェルスクリプトでRDBのデータを複数行更新する必要があったから。

11111
22222
33333
44444
...

のようなデータがあった時にこれらをキーにステータスを更新したいとしよう。

UPDATE Foo
   SET Status = '3'
 WHERE ID = '11111';

このUPDATE文を行数分発行するのはあまりやりたくないだろう。
なので、こうする。

UPDATE Foo
   SET Status = '3'
 WHERE ID IN('11111', '22222', '33333');

この時に元のデータから '11111', '22222', '33333' という文字列を作りたかったのだ。

実際にはSQL文の長さ上限とか、コミットサイズとかの制限があるので、
適当なデータ数を決めて、UPDATE文を作成すればいい。