presto读取mysql中的json类型字段数据解决办法

版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:http://www.fanlegefan.com/ https://blog.csdn.net/woloqun/article/details/86496166

mysql中如果字段类型为json类型的话,presto只可以查询,但是不能做转换操作,包括最常规的json函数全部不能用;说白了目前presto暂时不支持mysql 中json类型,先来看张mysql中的表

CREATE TABLE `test` (
  `date` date NOT NULL DEFAULT '0000-00-00' ,
  `id` varchar(20) NOT NULL ,
  `data` json NOT NULL ,
  PRIMARY KEY (`date`,`id`)
)

在presto中查看表结构

CREATE TABLE m_catalogs.m_schema.test (    
date date,    
id varchar(20),    
data char(0) )

可以看到,data字段在presto中映射成了char(0),字段长度为零,你做任何操作转换操作都会报错,因为presto在解析的时候,发现你的字段长度为0,而你的实际长度不为零就会报如各种错,解决办法当然有,也比较简单

  select json_extract(json_parse(trim(cast(cast(data as char(10000))as varchar(10000)))),'$.photo')
   from m_catalogs.m_schema.test limit 10
   

接下来你们也知道怎么处理了

猜你喜欢

转载自blog.csdn.net/woloqun/article/details/86496166