イメージ
 Kindle Paperwhiteが故障 2023年の3月購入なので、1年の保証期間はとっくに過ぎている。 状況は、画面右端が充電後に表示欠けを起こすようになった。 最初は1cm程度だったのに、いまでは2cm程度表示できず、右端の文字が読めない状況に…。 さて、修理可能なのか不明なので、Amazonに問い合わせすることに…。 チャットで問い合わせを選択すると、すぐに担当者につながった。 日本人の名前ではなかったけれど、とても丁寧な対応でしっかり教育されている感じ。 結果的には、 ・修理対応は行っていない。 ・買い替えるしか手段はない。 しかも、同一機種はすでに無く、後継機種(画面が7インチにUp)しか選択できない。 さて、どうしようかとチャットしながら考えていたら、先方から提案が…。  再度、Kindle端末を購入されるのであれば、15%OFFのギフトを送る(登録)ってくれる。  ご検討くださいとのことだった…。 なるほど…。  いま Kindle端末 を見ると22,980円か〜。さらに15%OFFとなると、19,533円 迷うなぁ…。もうタブレットを使用しちゃおうかとも考えていたので…。 ギフトの期限は無いそうなので、しばらく悩んでみますゎ。

これは使える!テキストツール csvq

GO製 csvq

いつも使えそうなツールをチェックしているのだけれど、久々に使えるものを入手した。

csvファイルをDBのように扱い、sqlで操作可能にする。

インストールはBinaryをダウンロードしてPATHの通ったところに置いて完了。

ちなみに、他の人はどうしているのか分からないけれど、どこに置くのかというのはいつも悩ましい所。
  • /usr/bin
  • /usr/local/bin
あたりが、多いんでしょうか…。
まあ、マルチユーザの場合、パッケージなどで入れたものは、/usr/bin以下に入るだろうし、buildするタイプなどで作法の良いものなら/usr/local/binなどに入れるのが普通だろうなぁ。
 自分の場合は、個人で使用する場合や自作のもので、一時的に使うモノは、~/bin というフォルダを作成していて、ここにポイッと入れて動作テストなどしている。
もちろん、PATHを通しておく必要が有る…。

さて、解凍してcsvqをbin以下に入れれば即実行できる。

こいつ強力すぎる!

実際に試してみると、こいつは便利だ。
試しに次のようなデータを作成してテストしてみた。(user.csvとscore.csv)

データを一覧したければ、
$ csvq
> select * from user;

+----+--------+-----+-------------+
| id |  name  | age |     tel     |
+----+--------+-----+-------------+
| 1  | user1  | 20  | 01011112222 |
| 2  | user2  | 21  | 01011113333 |
| 3  | user3  | 22  | 01011114444 |
| 4  | user4  | 23  | 01011115555 |
| 5  | user5  | 24  | 01011116666 |
| 6  | user6  | 25  | 01011117777 |
| 7  | user7  | 26  | 01011118888 |
| 8  | user8  | 27  | 01011119999 |
| 9  | user9  | 28  | 01022221111 |
| 10 | user10 | 29  | 01022222222 |
+----+--------+-----+-------------+
まんま、mysqlコマンドと同じような表示をしてくれる。
> select * from score;
+----+---------+-------+------------------+
| id | user_id | score |       date       |
+----+---------+-------+------------------+
| 1  | 2       | 100   | 2019/3/12 10:00  |
| 2  | 4       | 200   | 2019/3/12 10:15  |
| 3  | 6       | 300   | 2019/3/12 10:30  |
| 4  | 8       | 400   | 2019/3/12 10:45  |
| 5  | 10      | 500   | 2019/3/12 11:00  |
| 6  | 1       | 600   | 2019/3/12 11:15  |
| 7  | 3       | 700   | 2019/3/12 11:30  |
| 8  | 5       | 800   | 2019/3/12 11:45  |
| 9  | 7       | 900   | 2019/3/12 12:00  |
| 10 | 9       | 1000  | 2019/3/12 12:15  |
+----+---------+-------+------------------+
この2つよく有るパターンのテーブルです。

でもって、joinしてみる。
> select * from user join score on user.id = score.user_id order by score desc;

+----+--------+-----+-------------+----+---------+-------+------------------+
| id |  name  | age |     tel     | id | user_id | score |       date       |
+----+--------+-----+-------------+----+---------+-------+------------------+
| 1  | user1  | 20  | 01011112222 | 6  | 1       | 800   | 2019/3/12 11:15  |
| 5  | user5  | 24  | 01011116666 | 8  | 5       | 800   | 2019/3/12 11:45  |
| 10 | user10 | 29  | 01022222222 | 5  | 10      | 700   | 2019/3/12 11:00  |
| 8  | user8  | 27  | 01011119999 | 4  | 8       | 600   | 2019/3/12 10:45  |
| 9  | user9  | 28  | 01022221111 | 10 | 9       | 600   | 2019/3/12 12:15  |
| 4  | user4  | 23  | 01011115555 | 2  | 4       | 500   | 2019/3/12 10:15  |
| 2  | user2  | 21  | 01011113333 | 1  | 2       | 400   | 2019/3/12 10:00  |
| 7  | user7  | 26  | 01011118888 | 9  | 7       | 300   | 2019/3/12 12:00  |
| 6  | user6  | 25  | 01011117777 | 3  | 6       | 200   | 2019/3/12 10:30  |
| 3  | user3  | 22  | 01011114444 | 7  | 3       | 100   | 2019/3/12 11:30  |
+----+--------+-----+-------------+----+---------+-------+------------------+
うわー、テストするだけなら、これで十分かも…。
ひょっとすると、講義でも使えるかもしれない。
DB無しで、csvファイルだけ用意して、練習するとか…。良いかも!

 とりあえず、sum( ) や avg( ) などは使えるし、他にも関数は大量に用意されている。
マニュアルを見ると、こんなことまで対応しているのかと驚く。
https://mithrandie.github.io/csvq/

もちろん、selectだけでなく、insert/updateなど一通り揃っているので、手軽にテストできそう。

他には、UTF-8にもShift-JISにも対応しているようだし、JSONも扱えるらしい。
区切り記号もカンマ以外にもOKなので、テキストファイルに落とせれば何とかなりそうな気配。

SQL使いたいけど、DBインストールできない人とか、DBから持ってきたデータで検証したいとかという目的にも行けそう。
子プロセスで実行して、SQLiteの代わりに使うとか…。パイプで処理繋いでやれば何とでもなりそうで期待大(笑)


コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動