CSVはまだまだ現役です
お仕事のシステムでいくつかのデータをCSV形式で保持しているのですが、これが中々巨大なデータで列が30とかザラにあります。
この中のデータを加工してテストデータ作成して、という作業があったのですが、各カラムにダブルクォートがあったりなかったりで統一されておらず。全項目ダブルクォートなしにするかありにするか、どちらかに寄せて良いか確認したところ、そのままの形で作成して欲しい依頼があったので、ちょっと難儀でした。
Visual Studio Codeで編集
そんなデータを Visual Studio Code (VSCode)を使って編集していましたが、そういえばCSVの拡張機能ないかなぁと思って調べていたところ、すごく使いやすい物がありました。
Rainbow CSV
こんな感じ
CSVを開くと良い感じに色分け
拡張機能をいれてCSVファイルを開くと各カラムが色付けされます。
そして、マウスカーソルをカラムデータに合わせるとそれが何カラム目なのかとヘッダ情報(一行目をヘッダとして認識)を表示してくれるので、列が多い時や空データが続く場合など視認性が非常によくなります。
色分けだけじゃないデータ加工
Rainbow CSVには色分け表示だけでなく、SQLライクな文法でデータを加工する機能もついています。
CSVを開いている画面下部にある「Query」をクリックします。
またはコマンドパレット(「Ctrl」+「Shift」+「p」)から「Rainbow CSV: RBQL」を実行します。
すると以下のようにクエリ入力画面に切り替わります。
試しにいくつかの列を抽出してみます。
クエリ入力することころにselect a1, a2, a3
でRunしてみます。
するとエラーになってしまいました…
入力データが Shift-JIS になっているのが原因ですね。元ネタのCSVの文字コードをUTF8に変換して再度クエリを実施。
無事指定した内容で結果が出てきました。
結果画面の下部にある「Copy Back」をクリックすることでオリジナルのCSVファイルにクエリ実行結果を反映することもできますし、結果ファイルを別名で保存することも可能です。
入れ替え
クエリの書き方によって列を入れ替えたり、データ内の値を変更したり、固定文字出したりといろいろできます。
select a1, a3, a2
とすると先ほどの例の「都道府県」と「元号」の部分が入れ替わります。
通し番号
select "No." + NR, a1, a3, a2
とすると先頭に「No.」とレコード番号が付与されます。
先頭行(ヘッダ行)カウントしているので、ちょっと工夫は必要そうです…
Visual Studio Code上で機能拡張できるので便利
こういう機能を自分でカスタマイズして自分で機能拡張できるのもVisual Studio Codeの良いところですね。(拡張機能がありすぎて選べなかったりしますが…)