Vertica的这些事(三)—— 谈谈vertica的flex table

Json格式对于现在所有的软件开发者都不陌生,很多数据格式都用他来存储,我们来看一下vertica是怎么处理json数据的。这就是vertica的flex table!

首先创建一个json文件:

{"name": "Everest", "type":"mountain", "height":29029, "hike_safety": 34.1}
{"name": "Mt St Helens", "type":"volcano", "height":29029, "hike_safety": 15.4}
{"name": "Denali", "type":"mountain", "height":17000, "hike_safety": 12.2}
{"name": "Kilimanjaro", "type":"mountain", "height":14000 }
{"name": "Mt Washington", "type":"mountain", "hike_safety": 50.6}

然后我们创建一个flex table:

dbadmin=> CREATE FLEX TABLE start_json();
CREATE TABLE

然后把数据copy进去:

dbadmin=> COPY start_json FROM '/home/dbadmin/qcfData/*json*' PARSER fjsonparser();
 Rows Loaded 
-------------
           5
(1 row)

查询结果:

dbadmin=> select * from start_json();
ERROR 4256:  Only relations and subqueries are allowed in the FROM clause
dbadmin=>  SELECT maptostring(__raw__) FROM start_json;
                                               maptostring                                                
----------------------------------------------------------------------------------------------------------
 {
   "height" : "29029",
   "hike_safety" : "34.1",
   "name" : "Everest",
   "type" : "mountain"
}

 {
   "height" : "29029",
   "hike_safety" : "15.4",
   "name" : "Mt St Helens",
   "type" : "volcano"
}

 {
   "height" : "17000",
   "hike_safety" : "12.2",
   "name" : "Denali",
   "type" : "mountain"
}

 {
   "height" : "14000",
   "name" : "Kilimanjaro",
   "type" : "mountain"
}

 {
   "hike_safety" : "50.6",
   "name" : "Mt Washington",
   "type" : "mountain"
}

(5 rows)

发现很好的解析了json文件,并且格式化了文件。

查询json数据:

dbadmin=>  SELECT start_json.type,start_json.name FROM start_json;
   type   |     name      
----------+---------------
 mountain | Everest
 volcano  | Mt St Helens
 mountain | Denali
 mountain | Kilimanjaro
 mountain | Mt Washington
(5 rows)

此时如果使用 * 查询 会出现乱码:

SELECT * FROM start_json;

需要使用函数 compute_flextable_keys

select compute_flextable_keys(‘start_json’);

然后查询就可以有结果

综上,flex table 对json格式的数据提供了很好的存储于展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据社

码字不易,谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值