sqoop中的占位符

sqoop import语句:

要求必须在where条件语句后面加占位符\$CONDITIONS"。

但是我的select语句本身是不需要有where条件语句的,此时可以直接在select语句后面只写一个where 不加条件,再加一个\$CONDITIONS 即 where \$CONDITIONS

sqoop import \
--connect jdbc:mysql://172.XX.X.XXX:3306/数据库名 \
--username 数据库用户名 \
--password 数据库密码 \
--query "select * from users_userprofile where \$CONDITIONS" \
--target-dir /origin_data/test/sqoop/db/ods/ods_users_userprofile/2022-03-10 \
--delete-target-dir \
--fields-terminated-by "\t" \
--num-mappers 1 \
--null-string '\\N' \
--null-non-string '\\N'

如果有where条件,则需要在条件后面 用and 和 \$CONDITIONS 连接,即 where XXX and \$CONDITIONS。

sqoop import \
--connect jdbc:mysql://172.XX.X.XXX:3306/数据库名 \
--username 数据库用户名 \
--password 数据库密码 \
--query "select * from users_userprofile where id < 10 and \$CONDITIONS" \
--target-dir /origin_data/test/sqoop/db/ods/ods_users_userprofile/2022-03-10 \
--delete-target-dir \
--fields-terminated-by "\t" \
--num-mappers 1 \
--null-string '\\N' \
--null-non-string '\\N'

额外小计:

'\\N':单引号' '原样显示里边的内容=>\\N ,sqoop的底层是java代码,java中\\会转义为\,即最后会显示为\N。

Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性。在导出数据时采用--input-null-string--input-null-non-string两个参数。导入数据时采用--null-string--null-non-string

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值