Sqoop到Oracle 一次查询/执行多个命令

 

    sqoop eval \
       --connect ${CONN_VAR} \
       --username ${USERNAME} \
       --password ${PASSWORD} --verbose \
       --query "
           DECLARE
           BEGIN
               ${BATCH_SQL}
           END;
       "

# ${BATCH_SQL} 中的语句用逗号隔开即可
#循环月份
while [ $V_MONTH -le $END_MONTH ]; 
do

    # 处理整月的day_id分区
    START_DAY="${V_MONTH}01"                                       #20210701
    NEXT_MONTH=$(date -d "${START_DAY} +1 months " +%Y%m%d)        #20210801
    END_DAY=$(date -d "${NEXT_MONTH} -1 days" +%Y%m%d)             #20210731
    V_THIS_DAY=$START_DAY
    
    BATCH_SQL=""
    while [ $V_THIS_DAY -le $END_DAY ];
    do
        # echo $V_THIS_DAY
        BATCH_SQL=${BATCH_SQL}"p_create_table_partition('${oracle_table_name}', 'P_${V_THIS_DAY}', '${V_THIS_DAY}');"
        V_THIS_DAY=$(date -d "${V_THIS_DAY} +1 day" +%Y%m%d)
    done
        
    # echo "PL/SQL:"$BATCH_SQL

    sqoop eval \
       --connect ${CONN_VAR} \
       --username ${USERNAME} \
       --password ${PASSWORD} --verbose \
       --query "
           DECLARE
           BEGIN
               ${BATCH_SQL}
           END;
       "

    #推送整月数据到uat
    echo "推送${V_MONTH}整月数据到前端库(前端库的分区键是day_id)"
    
    sqoop export \
        --table ${oracle_table_name} \
        --connect ${CONN_VAR} \
        --username ${USERNAME} \
        --password ${PASSWORD} \
        --fields-terminated-by '\001' \
        --outdir /var/lib/hadoop-hdfs/nhlh/feed/jar_file \
        --export-dir 
 /user/hive/warehouse/mreport_feed.db/${hive_table_name}/op_month=${V_MONTH}


    V_MONTH=`echo $(date -d "${V_MONTH}01 +1 month" +%Y%m)`
done

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值