13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

#前回の内容
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が効いているので、高速に取り出すことが出来る。

#まとめ

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

13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?