シェルスクリプトでSQLiteを利用する

shell-sqlite-thumbnail

SQLiteのコマンドラインインターフェースを導入して、シェルスクリプトからSQLiteのデータベースを作成して、データの表示を行います。データはSQLのwindow関数を用いて、増減率も表示したいと思います。

スポンサーリンク

SQLiteのコマンドラインインターフェースの導入

SQLiteをシェルで利用するために、SQLiteのコマンドラインインターフェースを環境にセットアップします。
まず、SQLiteのホームページより最新のソースコードをダウンロードします(最新のバージョンはSQLiteのホームページで確認してください)。
※この後の例で、SQLのwindow関数(SQLiteの場合>=3.25より)を利用する予定なので、apt等のパッケージ管理ツールでダウンロードする場合、バージョンが古い可能性があります。

そして、ダウンロードしたファイルを展開します。

展開されたファイルの内容は、単純です。

これをgccを用いてコンパイルします。コンパイルオプションはsqliteをフル機能で使えるようにしています。公式サイトでのフル機能のコンパイル方法とほぼ一緒ですが、さらにライブラリの追加が必要で、"-lm"も追加してください。

また、コンパイルするときにncursesがないと警告されたら、必要なパッケージをインストールしてください。(以下は、Ubuntuでの例になります。)

シェルスクリプトの作成

日本の人口について、データベースに保存・表示を行うシェルスクリプトであるshellsqlite.shを作成します。

実装する機能については、create,insert,insertfile,update,delete,displayの機能を実装したいと思います。

利用するデータについて

日本の人口データは総務省統計局のホームページの「人口推計」を参考にデータをcsvファイルへ加工したものを利用します。また、人口の単位は千人単位になります。

population.csv

それぞれのアルファベットの意味は
year:年
tp:総人口
tpm:総人口での男性
tpf:総人口での女性
jp:日本人人口
jpm:日本人人口での男性
jpf:日本人人口での女性
になります。

シェルスクリプトの実装

いくつかの機能を実装するため、引数によってそれぞれの機能が利用できるようにします。

つまり、シェルスクリプトの後にcreateやinsertなどのコマンドを入力することでそれぞれの機能を利用できるようにします。

また、機能の簡単なヘルプをそれぞれ記述します。

createコマンド

createコマンドはデータベースファイルを作成する機能になっています。

このコマンドは以下のような形式で利用できるようにします。

この機能は以下のように実装します。

insertコマンド

insertコマンドはデータベースにデータを1件入力する機能になります。

このコマンドは、少々長い形式ですが、以下のような形式で利用できるようにします。

この機能は以下のように実装します。

insertfileコマンド

insertfileコマンドはデータベースにcsvファイルをsqliteの機能を用いて、インポートする機能になっています。

このコマンドは以下のような形式で利用できるようにします。

この機能は以下のように実装します。

updateコマンド

updateコマンドは"年"をキーにして、データを更新する機能になります。

このコマンドは年のみ必須項目として、他の項目は任意な項目として、以下のような形式で利用できるようにします。

この機能は以下のように実装します。

deleteコマンド

deleteコマンドは"年"をキーにして、データを削除する機能になります。

また、deleteコマンドは

みたいに複数の"年"を指定して、複数のデータを削除できるような形式で実装してみます。

この機能は以下のように実装します。

displayコマンド

displayコマンドは、データベースを読み込んで、年・総人口・総人口の増減率・日本人人口・日本人人口の増減率を表示する機能になっています。
lag(tp) over (order by year)のような部分はSQLのwindow関数になっています。これはテーブルを"年"に並べて現在行の前行のデータを出します。これによって、前年との増減率を計算できます。

このコマンドは以下のような形式で利用できるようにします。

この機能は以下のように実装します。

シェルスクリプトのソースコード

shellsqlite.shのソースコードは以下のようになります。
また、完成したshellsqlite.shのソースコードは以下のようになります。

shellsqlite.sh

作成したシェルスクリプトの利用

shellsqlite.shを簡単に利用してみます。まず、shellsqlite.shに実行権限を付与します。

createコマンドを行って、データベースを作成し、insertfileコマンドでデータのcsvファイルをインポートします。その後、displayコマンドを用いると日本の総人口と日本人人口のデータが前年との増減率と一緒に表示されます。

2011年以降から日本の人口がどんどん減少している様子が見えます・・・。

今回はシェルスクリプトとSQLiteを利用してデータベースを利用した簡単なプログラムを作成しました。displayの機能を変えれば、別の表も表示できます。また、コマンドの追加を行ったり、別のデータを読み込めるようにしたり、いろいろなことができると思います。

参考

Command Line Shell For SQLite

データの出典:総務省統計局ホームページ「人口推計」(総務省統計局)
人口推計 長期時系列データ 長期時系列データ(平成12年~27年)
全国 1 男女別人口(各年10月1日現在)- 総人口,日本人人口(平成12年~27年)より
(2020年5月30日に利用)

スポンサーリンク

シェアする