MAP
更新时间:2025-05-29
MAP<K, V>
表示由 K, V 类型元素组成的 map,不能作为 key 列使用。
- 目前支持在 Duplicate,Unique 模型的表中使用。
K, V 支持的类型有:
SQL
1BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL, DECIMALV3,
2DATE, DATEV2, DATETIME, DATETIMEV2, CHAR, VARCHAR, STRING
CSV 格式导入
第 1 步:准备数据
创建如下的 csv 文件:test_map.csv
其中分隔符使用 |
而不是逗号,以便和 map 中的逗号区分。
Plain Text
11|{"Emily":101,"age":25}
22|{"Benjamin":102}
33|{}
44|null
第 2 步:在数据库中建表
SQL
1CREATE TABLE map_test (
2 id INT NOT NULL,
3 c_map MAP<STRING, INT> NULL
4)
5DUPLICATE KEY(id)
6DISTRIBUTED BY HASH(id) BUCKETS 1
7PROPERTIES (
8 "replication_allocation" = "tag.location.default: 1"
9);
第 3 步:导入数据
Bash
1curl --location-trusted \
2 -u "root":"" \
3 -H "column_separator:|" \
4 -H "columns: id, c_map" \
5 -T "test_map.csv" \
6 http://localhost:8040/api/testdb/map_test/_stream_load
第 4 步:检查导入数据
SQL
1mysql> SELECT * FROM map_test;
2+------+-------------------------+
3| id | c_map |
4+------+-------------------------+
5| 1 | {"Emily":101, "age":25} |
6| 2 | {"Benjamin":102} |
7| 3 | {} |
8| 4 | NULL |
9+------+-------------------------+
104 rows in set (0.01 sec)
JSON 格式导入
第 1 步:准备数据
创建如下的 JSON 文件,test_map.json
JSON
1[
2 {"id":1, "c_map":{"Emily":101, "age":25}},
3 {"id":2, "c_map":{"Benjamin":102}},
4 {"id":3, "c_map":{}},
5 {"id":4, "c_map":null}
6]
第 2 步:在数据库中建表
SQL
1CREATE TABLE map_test (
2 id INT NOT NULL,
3 c_map MAP<STRING, INT> NULL
4)
5DUPLICATE KEY(id)
6DISTRIBUTED BY HASH(id) BUCKETS 1
7PROPERTIES (
8 "replication_allocation" = "tag.location.default: 1"
9);
第 3 步:导入数据
Bash
1curl --location-trusted \
2 -u "root":"" \
3 -H "format:json" \
4 -H "columns: id, c_map" \
5 -H "strip_outer_array:true" \
6 -T "test_map.json" \
7 http://localhost:8040/api/testdb/map_test/_stream_load
第 4 步:检查导入数据
SQL
1mysql> SELECT * FROM map_test;
2+------+-------------------------+
3| id | c_map |
4+------+-------------------------+
5| 1 | {"Emily":101, "age":25} |
6| 2 | {"Benjamin":102} |
7| 3 | {} |
8| 4 | NULL |
9+------+-------------------------+
104 rows in set (0.01 sec)