将hive数据库中的表数据导入oracle数据库中的方法

将hive数据库中的表数据导入oracle数据库中的方法_第1张图片

将hive数据库中的表数据导入oracle数据库中的方法_第2张图片 

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

将hive数据库中的表数据导入oracle数据库中的方法_第3张图片

需要修改一些特定数据(表名、字段名)

将hive数据库中的表数据导入oracle数据库中的方法_第4张图片

 

--如果需要里面的某个值,就执行下面的函数后
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;

 

你可能感兴趣的:(Linux,hive,oracle,linux,hive,oracle)