hive表导入到数据库

1.

 

2.选择SQL插入,导出到文件后打开导出的那个文件,把里面的insert插入语句复制到oracle控制台,创建新表,然后执行insert语句,注意,该改的要改

 

就比如这个json串,在oracle下不能使用map存储,要改成varchar2类型,同时要给外面的{}用单引号‘’引起来

 

如果需要里面的某个值,就执行下面的函数后

CREATE OR REPLACE FUNCTION GET_FROM_JSON(TABLE_ID VARCHAR2, KEY_JSON VARCHAR2) RETURN VARCHAR2 IS
    JSON_VALUE VARCHAR(30);
    JSON_INS   INTEGER;
    M_INS      INTEGER;
    D_INS      INTEGER;
BEGIN
    --获取json key位置
    select instr(TO_CHAR(T.score), KEY_JSON) INTO JSON_INS from hive_scores T WHERE T.ID = TABLE_ID;

    --获取json后第一个冒号
    select instr(TO_CHAR(T.score), ':', JSON_INS) INTO M_INS from hive_scores T WHERE T.ID = TABLE_ID;

    --获取json后第一个逗号
    select instr(TO_CHAR(T.score), ',', JSON_INS) INTO D_INS from hive_scores T WHERE T.ID = TABLE_ID;

    --最后一位json无逗号,直接取长度
    if JSON_INS <> 0 AND D_INS = 0 then
        select length(TO_CHAR(T.score)) INTO D_INS from hive_scores T WHERE T.ID = TABLE_ID;
    end if;

    --截取,字符串类型去除引号
    select replace(SUBSTR(TO_CHAR(T.score), M_INS + 1, D_INS - M_INS - 1), '"', '')
    INTO JSON_VALUE from hive_scores T WHERE T.ID = TABLE_ID;

    RETURN JSON_VALUE;
END;

再这样查询value值
--单独查询k:v里的value
select GET_FROM_JSON(id,'java') as java from hive_scores;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值