メインコンテンツまでスキップ
バージョン: 4.x

JSON

JSONデータ型は、JSONデータをバイナリ形式で効率的に保存し、JSON関数を通じてその内部フィールドへのアクセスを可能にします。

デフォルトでは、最大1048576バイト(1MB)をサポートし、最大2147483643バイト(2GB)まで増やすことができます。これはstring_type_length_soft_limit_bytes設定で調整可能です。

通常のSTRING型にJSON文字列を保存するのと比較して、JSON型には2つの主な利点があります:

データ挿入時のJSON形式検証。 より効率的なバイナリストレージ形式により、get_json_xx関数と比較して、json_extractなどの関数を使用したJSON内部フィールドへの高速アクセスが可能。

注意:バージョン1.2.xでは、JSON型はJSONBという名前でした。MySQLとの互換性を維持するため、バージョン2.0.0から JSON に名前が変更されました。古いTableでは以前の名前を引き続き使用できます。

CSV形式のインポート

ステップ1:データを準備する

以下のcsvファイルを作成します:test_json.csv セパレータはjson内のカンマと区別するため、カンマの代わりに|を使用します。

1|{"name": "tom", "age": 35}
2|{"name": null, "age": 28}
3|{"name": "michael", "age": null}
4|{"name": null, "age": null}
5|null

ステップ 2: データベースにTableを作成する

CREATE TABLE json_test (
id INT NOT NULL,
c_json JSON NULL
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);

ステップ 3: データの読み込み

curl --location-trusted \
-u "root":"" \
-H "column_separator:|" \
-H "columns: id, c_json" \
-T "test_json.csv" \
http://localhost:8040/api/testdb/json_test/_stream_load

ステップ 4: インポートされたデータを確認する

SELECT * FROM json_test;
+------+-------------------------------+
| id | c_json |
+------+-------------------------------+
| 1 | {"name":"tom","age":35} |
| 2 | {"name":null,"age":28} |
| 3 | {"name":"michael","age":null} |
| 4 | {"name":null,"age":null} |
| 5 | null |
+------+-------------------------------+
5 rows in set (0.01 sec)

JSON形式のインポート

ステップ1: データを準備する

以下のJSONファイル test_json.json を作成してください

[
{"id": 1, "c_json": {"name": "tom", "age": 35}},
{"id": 2, "c_json": {"name": null, "age": 28}},
{"id": 3, "c_json": {"name": "michael", "age": null}},
{"id": 4, "c_json": {"name": null, "age": null}},
{"id": 5, "c_json": null}
]

ステップ 2: データベースにTableを作成する

CREATE TABLE json_test (
id INT NOT NULL,
c_json JSON NULL
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);

ステップ 3: データの読み込み

curl --location-trusted \
-u "root":"" \
-H "format:json" \
-H "columns: id, c_json" \
-H "strip_outer_array:true" \
-T "test_json.json" \
http://localhost:8040/api/testdb/json_test/_stream_load

ステップ4: インポートされたデータを確認する

mysql> SELECT * FROM json_test;
+------+-------------------------------+
| id | c_json |
+------+-------------------------------+
| 1 | {"name":"tom","age":35} |
| 2 | {"name":null,"age":28} |
| 3 | {"name":"michael","age":null} |
| 4 | {"name":null,"age":null} |
| 5 | NULL |
+------+-------------------------------+
5 rows in set (0.01 sec)