Linux:さくらレンタルサーバ sqlite3でコマンドラインから日本語入力
sqlite3 で日本語の入力ができない
sqlite3 の対話用のcui Command Line Shell For SQLite では、日本語の入力ができない。
$ sqlite3 hoge_db
sqlite> select * from fuga_table where name = "日本語";
ということが出来ない。「日本語」と入力しようとすると、消えてしまう。
ログインシェルの文字コード
さくらレンタルサーバのログインシェルの文字コードを変更していない場合は、まず変更する。
bash の場合
# .bashrc
export LANG=ja_JP.UTF-8
csh の場合
# .cshrc
setenv LANG ja_JP.UTF-8
としておいて、ログインしなおす。
sqlite3 コマンドを batch モードで使う
sqlite3の対話モード用シェルが、日本語の入力に対応していないのが問題。しかし、sqlite3コマンドには、対話モードに入らず処理を行える、バッチモードが存在するので、これを使えば一応解決する。
$ sqlite3 hoge.db "select * from fuga_table where name = \"わはは\";"
$ sqlite3 hoge.db "update fuga_table set name = \"自然農ガットポンポコ 小林\" where id = 8;"
もしくは、
$ sqlite3 -batch hoge.db "select * from fuga_table where name = \"わはは\";"
$ sqlite3 -batch hoge.db "update fuga_table set name = \"自然農ガットポンポコ 小林\" where id = 8;"