レトロなファイルフォーマットと思っていてもまだまだ職場では使われているのがCSVです。システムからもCSV出力するものがまだまだあるはずです。CSVといえばデータがひたすら並んでおり、データの抽出も面倒です。 そこで使ってみたいのがcsvqです。コマンドラインでCSVファイルをまるでデータベースのようにデータ抽出できます。

csvqの使い方

普通にSQLを書いてデータ抽出できます。

$ csvq 'select * from `test.csv` where column1 > 1'
+---------+---------+
| column1 | column2 |
+---------+---------+
| 2       | str2    |
| 3       | str3    |
+---------+---------+

条件を変えたり、表示するカラムの指定もできます。

$ csvq 'select column1 from `test.csv` where column1 > 1'
+---------+
| column1 |
+---------+
| 2       |
| 3       |
+---------+

csvqはまさにSQLを使ってCSVのデータ抽出を行えるようになります。Joinも可能ですし、さらにSELECTだけでなくInsertやUpdateもできます。トランザクションもサポートしており、データメンテナンスにも活用できます。面白いところではJSONが使えたり、Shift-JISもサポートしていることでしょう。

csvqはGo製のオープンソース・ソフトウェア(MIT License)です。

mithrandie/csvq: SQL-like query language for csv