2021年3月21日日曜日

SQLite 3 バッチファイルやシェルスクリプトからSQLを実行する

概要

コマンドプロンプトやbashからSQLiteのDBファイルに対しSQLを実行する方法。

pythonやRubyなどの言語であれば専用のライブラリ等でDBに接続してSQLを実行できるが、 コマンドプロンプトやbashの場合はSQLiteのコマンドラインツール使って実行することになる。

Windowsへのコマンドラインツール導入は以下を参照のこと。
SQLite コマンドラインツール導入手順 (Windows 10)

実行例

sqliteコマンドラインツールの引数にSQLを書くことができる。
パイプラインから渡したり、テキストファイルからのリダイレクトでもOK。

以下はWindowsのコマンドプロンプトからinsert文を実行する例。

普通に引数に指定する

C:\temp>sqlite3 sqlite.db "insert into test_table (id, name) values (001, 'example')"
                
パイプラインから渡す

C:\temp>echo "insert into test_table (id, name) values (001, 'example')" | sqlite3 sqlite.db
                
テキストファイルからリダイレクトする

テキストはUTF-8で作成する


C:\temp>more insert.sql
insert into test_table (id, name) values (001, 'example')

C:\temp>sqlite3 sqlite.db < insert.sql
                

応用

上記の手順であればSQLだけでなく、SQLite コマンドラインツールの各種コマンドを実行出来る。 「.once」コマンドでselectの結果をテキストファイルに出力したり、 「.read」コマンドで複数のSQLファイルを組み合わせて実行することも可能。

また、「%ERRORLEVEL%」や「$?」で終了コードを取得できるので、 実行したSQLやコマンドが失敗したかどうかも確認することができる。
SQLite 3 コマンドラインツールにも終了コードはある

参考URL