应用环境:在实际业务中,表中数据量大且历史数据不会被修改,成交订单数据,可以采用增量表导入

#!/bin/bash
#传入增量导入的起始日期,若不传,则默认为前一天
args=$1
dt=
if [ ${#args} == 0 ]
    then 
    	dt=`date -d '1 days ago' +%Y%m%d`
    else
    	dt=$1
fi

sqoop job --delete bap_user_order
sqoop job --create bap_user_order \
-- import \
--connect jdbc:mysql://singleNode:3306/snbap_ods \
--driver com.mysql.jdbc.Driver \
--username root \
--password-file /sqoop/pwd/sqoopPWD.pwd \
--table user_order \
--target-dir /snbap/ods_tmp/ods_user_order \
--fields-terminated-by '\001' \
--incremental lastmodified \
--check-column update_time \
--last-value $dt

echo "执行sqoop语句,开始加载数据"
sqoop job --exec bap_user_order
echo "执行sqoop语句完成"

echo "加载数据到分区表"
#使用 load data inpath模式加载数据到hive表时会删除源数据
#使用 load data local inpath模式加载数据到hive表时不会删除源数据
hive -e "load data inpath '/snbap/ods_tmp/ods_user_order/*' into table snbap_ods.ods_user_order partition(dt='$dt')"
rm -f *.java

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐