LoginSignup
1
3

More than 3 years have passed since last update.

WindowsバッチでSQLiteのデータベースの値を取得する方法

Last updated at Posted at 2018-11-01

はじめに

Windowsバッチでもデータベースの値を取得することができます。

今回、WindowsバッチでSQLiteのデータベースの値を取得する方法を解説します。
ただし、今回解説する方法はWindows上に存在するDBの値を取得する方法に限りますので、
別サーバー上のDBの値を取得する方法ではないのでご注意ください。

1. サンプルコマンド

まずサンプルとして、以下の情報のときsample_tableのvalueを取得する例をあげます。

SQLite起動exeファイル:sqlite3.exe
DBファイル:sampleDb.sqlite
取得したいテーブル:sample_table
取得したいカラム:value

sample.bat
set SQLCMD=sqlite3.exe "sampleDb.sqlite" "select value from sample_table;"
setlocal enabledelayedexpansion
for /f "usebackq delims=" %%a in (`%SQLCMD%`) do set String=%%a

2. 構文

2-1. SQL実行コマンド

SQLite起動exeファイルへDBファイルとSQL文を引数として渡すことで
SQLの実行結果を取得することができます。

SQLite起動exeファイル "DBファイル" "SQL文"

各ファイルのパスですが、実行するbatファイルからの相対パスもしくは絶対パスのどちらも指定することが可能です。

上記コマンドを実行すると、SQL文の結果が戻り値として返却されます。

2-2. コマンド実行結果の取得

まず、for文を使用するときは以下のコマンドをあらかじめ実行します。

setlocal enabledelayedexpansion

ERRORLEVELコマンドを使用してエラー判定したいときなどに
このコマンドがないと正常終了してもエラーとしてリターンコードが返却されてしまいます。

理由としては、for文を実行している間にERRORLEVELコマンドが実行されるためです。

まあここはfor文を使うときはおまじないと思っていただければと思います。
なくても動きますが、for文を使用するときは記載するくせをつけましょう。

次にfor文の解説をします。

for /f "usebackq delims=" %%a in (コマンド) do set String=%%a

各オプションは以下の役割をしてます。

オプション 役割
/f コマンドの実行結果を行単位で変数に読み込み繰り返し処理が行えるオプションです。
delims=" デリミタ(区切り)を無効にする。
usebackq=コマンド `(バッククォート)で囲まれた文字列をコマンドとして実行する。

for文でコマンドを実行し、戻り値を%%aに一時的に格納し、
Stringに代入しているというイメージです。

最後にもう一度サンプルプログラムをのせておきます。

sample.bat
set SQLCMD=sqlite3.exe "sampleDb.sqlite" "select value from sample_table;"
setlocal enabledelayedexpansion
for /f "usebackq delims=" %%a in (`%SQLCMD%`) do set String=%%a

ぜひ活用してみてください。

さいごに

2020年から個人ブログはじめました!

フリーランスエンジニアになって得た知識と経験をもとに、フリーランスエンジニアに関する情報をはじめ、IT技術情報や業界情報、エンジニアライフハック等のコンテンツを配信していく予定です。

まだまだ記事数は少ないのですが、週単位で更新してますので、もしご興味ございましたら、みていただけると嬉しいです。

さいごまでお読みいただき、ありがとうございました。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3