定时每天执行前一天的数据导入oracle

时间:2022-10-18 04:10:31
#!/bin/bash
export LANG="en_US.UTF-8" #设定时间变量,为前一天时间
log_date=`date +%Y-%m-%d -d "-1 days"`

#清空hive上的数据,再重建一个文件夹
hadoop dfs -rm -r /hjh/channels
hadoop dfs -mkdir /hjh/channels

#设置文件路径
curr_dir="/home/hadoop/hjh/sh/channels/runlastdaychannels/"
temdir="${curr_dir}template/"
hqlfiledir="${curr_dir}hqlfile/"

#设置hql的文件路径
importTemFile="${temdir}channels.hql"
importHqlFile="${hqlfiledir}channels_${log_date}.hql" rm -f ${importHqlFile}
cp ${importTemFile} ${importHqlFile}

#发送hql文件到另一个文件夹
sed -i "s/__DATE_STR__/${log_date}/g" ${importHqlFile}
/opt/hive-0.13./bin/hive -f ${importHqlFile}

#把执行之后hdfs上的数据导入到oracle
/opt/sqoop-1.4.4/bin/sqoop export --table mytablename --connect jdbc:oracle:thin:@**.**.**.**:***:dbasename --username myusername--password mypassword
--export-dir /result/hive/***/000000_0 --columns column1,column2,column3
--input-fields-terminated-by '\001' --input-lines-terminated-by '\n'