Help us understand the problem. What is going on with this article?

SQLite3のJSON機能が便利だった2

More than 1 year has passed since last update.

前回の内容

SQLite3のJSON機能が便利だった

JSON文字列を挿入してみる

 前回は抽出時に複数のレコードの内容を一つのJSONテキストに変換できるという内容を取り扱った。そもそも記事にしたのはこんなに便利なのにjson_group_objectやjson_group_arrayの具体的な使い方が、検索に全然引っかからなかったためだ。今回はデータを挿入するときに便利なjson_eachについての内容を書いていきたい

テーブル構造

create table json_table(name text primary key,value json)

 前回同様、この形でテーブルを作る。nameがprimary keyになっているので、nameによる検索は高速に行うことが出来る。

データの挿入

 先ほど作ったテーブルにデータを挿入しようと思ったら以下のようになる。今回も上書き挿入を前提とするのでreplaceを使う。

replace into json_table values('a','{"c":789}');
replace into json_table values('b','456')

 特に便利でも何でも無い。しかしjson_eachを使うと、以下のように書くことが出来る

replace into json_table select key,value from json_each('{"a":{"c":789},"b":456}')

テーブルの状態

name value
a {"c":789}
b 456

 json_eachの中にJSON文字列を突っ込むだけで、一度の処理で複数レコードの挿入が可能になるのだ。JSONと相性が良い開発言語ならJSONにパースするメソッドを間に挟むだけで、変数のデータを一気に流し込むことが可能だ。しかもnameに関してはindexが効いているので、高速に取り出すことが出来る。

まとめ

 これだけ便利なのに、具体的な使い方が検索に引っかからない残念な状態となっている。他にも使い道を覚えれば便利に活用できる機能が埋もれている可能性があるので、引き続き色々と試していきたい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした