jqでJSON Lines(*.jsonl)

JSON Linesなるフォーマットがあることを知りました。

ちょろっと見るときには1レコード1行で見たい

jqコマンドでJSONをJSONL(JSON Lines)に変換する – rochefort’s blog

上のブログに JSON整形式をJSONLines に変換する方法が書いてあります。

逆の変換もGoogleって見つけました。jq –help では “JSON Line”って出てこないのでこれ見つけるのにかなり回り道してしまいました。

以下実行例です。以下のデータを使ってみます。

‘{“items”:[{“item_id”:1,”name”:”すてきな雑貨”,

jq コマンドを使う日常のご紹介 – Qiita

上のページでのJSONデータは “items” が配列ですがまずはこれを削ったJSON Linesデータを変数に入れます。

$ jsonlinedata='
> {"item_id":1,"name":"すてきな雑貨","price":2500}
> {"item_id":2,"name":"格好いい置物","price":4500}
> {"item_id":3,"name":"ナイスなお皿","price":4500}'

行数を確認します。

$ wc -l <<< $jsonlinedata
4

jq で JSON Lines –> JSON 変換します。

$ jq --slurp . <<< $jsonlinedata
[
  {
    "item_id": 1,
    "name": "すてきな雑貨",
    "price": 2500
  },
  {
    "item_id": 2,
    "name": "格好いい置物",
    "price": 4500
  },
  {
    "item_id": 3,
    "name": "ナイスなお皿",
    "price": 4500
  }
]

–slurp の替わりに –s でも良いです。

MySQL talk@LINE

昨日はありがとうございました。もう既に3つ資料がアップロードされてますね。

image

X DevAPIを使ってMySQL 8.0へアクセス
MySQL Router を監視するぞ!

mysql schema policy check を自動化してみた話

MySQL Casual Talks vol.12 – connpass

弊社のお客さんもMySQLユーザーが多いのでBinlog, Galeraなど知っておく必要があり勉強になりました。

group_concat() がSQLiteにもあるって説明があったと思います。 ‘q’ コマンド (q-TextAsData) もSQLiteを内包してますので使えます。僕のブログでも以下以外に何回もgroup_concatを使ってます。

group_concat()の第二引数を省略するとcomma区切り

WSLでも’q’コマンドでSQL使ってみた

それ以前にも僕がOracle社員時代にブログ書いたこと思い出しました。文字列の長さが長大になる場合の扱いの新機能があったようです。

Oracle DBではLISTAGG()です。最新版の12c R2(12.2)で以下の部分に新機能が追加されています。

SPARQL/MySQL/SQLiteのGROUP_CONCAT()相当はOracle DBではLISTAGG() | Oracle INOUE Katsumi @ Tokyo Blog

MySQL Router も僕がOracle時代に近い機能担当してたの思い出しました。

データ保全のために複数サイトに置かれたデータベースサーバーをより効率的に利用する機能

第5回 高可用性と利便性を両立するべく機能を拡張 | 日経 xTECH(クロステック)

もう6年前ですね。接続先をよしなに最適なところに振り分ける機能についてはまだ存在するか知りません笑。

SQL Serverにはアプリケーション側で自分のワークロードを宣言する機能があるのですがこれと同等の機能がMySQLで存在するか探しきれませんでした。

読み取り可能セカンダリへの自動ルーティング(ApplicationIntent=ReadOnly)

SQL Server 2012 自習書シリーズ 新機能編 No.2 AlwaysOn による可用性の向上

次回も楽しみです!