vim sqoop_export.sh
sqoop导出脚本:
#!/bin/bash
db_name=gmall
export_data() {
/opt/module/sqoop/bin/sqoop export \
--connect "jdbc:mysql://hadoop102:3306/${db_name}?useUnicode=true&characterEncoding=utf-8" \
--username root \
--password 000000 \
--table $1 \
--num-mappers 1 \
--export-dir /warehouse/$db_name/ads/$1 \
--input-fields-terminated-by "\t" \
--update-mode allowinsert \
--update-key "tm_id,category1_id,stat_mn,stat_date" \
--input-null-string '\\N' \
--input-null-non-string '\\N'
}
case $1 in
"ads_uv_count")
export_data "ads_uv_count"
;;
"ads_user_action_convert_day")
export_data "ads_user_action_convert_day"
;;
"ads_gmv_sum_day")
export_data "ads_gmv_sum_day"
;;
"all")
export_data "ads_uv_count"
export_data "ads_user_action_convert_day"
export_data "ads_gmv_sum_day"
;;
esac
- --update-key 修改 不指定这个参数就是插入
如:
--update-key "tm_id,category1_id,stat_mn,stat_date" \就是根据tm_id,category1_id,stat_mn,stat_date来判断是否执行更新操作
--update-mode allowinsert
updateonly 只更新,无法插入新数据
allowinsert 允许新增
允许插入,如果不允许则只存在更新操作,不存在插入新数据。--input-null-string '\N' \
--input-null-non-string '\N'
hive里面的空字段\N,到mysql里面变成null
--input-null-string '\N' 字符串类型的空数据转成null
--input-null-non-string '\N' 非字符串类型的空数据转成null