T42ではSQLが厳しいので、CSVでなんとかしてみる

今このThinkPad T42のスペックではsqlを使えないみたい。

 

マシンに必要な最低スペックが、mysqlでもメモリを最低1GBで、sqlserverにいたっては最低でも2GBは必要ということ。

現在は cpu Pentium 2.0GHz メモリ 1.25GB なのでメモリを最大(2GB)にしても追いつかない。

 

T42でsqlを勉強したかったのに。

 

ということで、csvファイル+linuxコマンドでやりたいことができるか勉強開始。

 

目標として

1,csvファイルは簡単な家計簿。

2,その家計簿からその月に合計いくらお金を使ったのか。

がわかればいいかなと。

 

まずcsvファイル作成

f:id:Takeshi_3:20211117143050j:plain

日付、品名、金額の3列でカンマ区切り。

 

これをcatなどで表示すると上記のまんま表示されるので見にくい。

これをコマンド「column」で見やすくする。

 

$column -ts, ファイル名.csv

f:id:Takeshi_3:20211117143929j:plain

オプションの-tはテーブルを作ってくれて、-s,(カンマ)はカンマを区切り文字とするという意味。

これでだいぶ見やすくなった。

 

ではprice列の合計を計算してみる。

$awk -F, '{sum += $3} END{print sum}' ファイル名.csv

-F,はawkの区切り文字を指定する。,(カンマ)を区切り文字として$3(三列目)をsumに足していき、printで合計を表示する。

f:id:Takeshi_3:20211117144459j:plain

これで3列目の合計が表示された。

 

では次に202111月のみの合計を計算してみる。

grep 202111 ファイル名.csv | awk -F, '{ sum += $3 } END{ print sum }'

f:id:Takeshi_3:20211117145038j:plain

まずgrepで202111が表示されている行を絞り込み、パイプで先程のawk列合計コマンドを入力すると202111のみの合計が表示された。

 

なんとかやりたいことがコマンドのみでできたので満足。なんだかコマンドでなんでもできてしまうのではと最近思うようになった。