Shellで構築するSQL「ShellQL」を作ってみる #3「json2csv」

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

JSONファイルをCSVファイルとKeyファイルに変換するshellスクリプトです。

概要

JSONファイルをCSVに変換するのは、さほど難しくないだろうと取り掛かったが、いくつかの困難があったので、メモとともにver 1.0を載せておきます。

ちなみに、この処理もjqモジュールのみ使用することになるので、事前インストールをお願いします。

苦労ポイント

当初は、jsonデータのkey値を除いたvalue値のみをカンマ区切りでテキスト化すればいいと考えてましたが、jsonファイルは、keyの並びが変更可能という点がカラム値固定のcsvと大きく違っている事に気が付きました。
また、同じような理由で、keyの存在も任意で行うことができるので、全てのレコードを一度検索して共通のkeyデータを作成しないといけないというところに気がついた時点で少し構築に時間を要しました。

あと、jqコマンドを使った際に、存在しないkeyがあると、nullという文字列が出力されるので、今回はnullをblankにして対応してます。

また、もともと「”flg”:””」のように、blankになっているものは、jqコマンドの -r オプションをつけると、無視されてカラムの番地がずれる現象があったので、一括取得をせずに、1カラム毎にjqコマンドを実行してます。
もしかすると、この処理のせいで、大きなデータ対応が非常にレスポンス悪くなってしまうかもしれないので、これも以後バージョンで検討します。

プログラム

使い方

注意点

jsonはネストは1階層のみを対象にしてます。
深度が複数バージョンはver 1.1で実現したいと思います。
ちなみに、key値の有りなし、順番任意に対しても対応しています。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です