とある案件でsqlite2のデータベースのあるテーブルに含まれる文字列の全置換をしたくなったんですが、ググってヒットするselect文で使えるreplaceコマンドはエラーになる。どうもsqlite3からの実装っぽい?
でsubstrを組み合わせた方法とやらも見つけたんですが、いまいち意味がわからず応用できませんでした。
結局、どうしたかというと、ダンプ->sedで置換->新DBにインポートというやり方で、下記の1行で済みました。
sqlite hoge.db .dump | sed –e ‘s/MH\./MF\./’ | sqlite hoge2.db
ちと見づらいですが、色つきの部分を適宜置き換えてご使用下さい。
元データベースファイル:hoge.db
新データベースファイル:hoge2.db
置換元ワード:MH.
置換後ワード:MF.
今回のワード中に含まれるピリオドはエスケープする必要がある為、前に’\’をつけています。
で、sqlite hoge2.dbして問題なく変換されていることを確認したら、元ファイルと差し替えます。