sqoop export数据覆盖分析

1.Sqoop export简介

Sqoop export工具被用来将文件集合从HDFS中导入到关系型数据库中。
目标表必须事先已经在数据库中创建好。输入文件根据用户指定的分隔符被读取解析成记录集。
Sqoop默认的是将这些操作转换成“INSERT模式”,向目标数据库中注入数据记录。
在“更新模式”中,Sqoop将会产生更新语句替换数据库中已经存在的记录。
在“调用模式”中,Sqoop会为每个记录产生一个存储过程调用。
1、“INSERT模式”:Sqoop默认将每条记录以转换成INSERT语句,添加到数据库表中,
如果你的表存在一些约束如关键字唯一等,使用插入模式要当心,
避免违反这些约束。如果一条记录插入失败那么,该导入job将会失败。
这种模式一般用于将数据导入到一个新的、空的表。Sqoop默认情况下使用INSERT 模式
2、“UPDATE模式”:如果指定–update-key参数,Sqoop将会修改一个数据库中存在的数据集,
每一条记录都会当做UPDATE语句来修改存在的记录。记录的修改语句根据–update-key指定的列决定。
如果一个更新语句在数据库中没有对应的记录,则不会报错,导出操作会继续进行。
事实上,这意味着不会在数据库中导入新的记录,只是更新原始数据。

2.参数介绍

–update-key 后面也可以接多个关键字列名,可以使用逗号隔开,Sqoop将会匹配多个关键字后再执行更新操作。
–export-dir 参数配合–table或者–call参数使用,指定了HDFS上需要将数据导入到MySQL中的文件集目录。
–update-mode updateonly和allowinsert。 默认模式为updateonly,如果指定–update-mode模式为allowinsert,可以将目标数据库中原来不存在的数据也导入到数据库表中。即将存在的数据更新,不存在数据插入

3.组合测试及说明

1、当指定update-key,且关系型数据库表存在主键时:
A、allowinsert模式时,为更新目标数据库表存的内容,并且原来不存在的数据也导入到数据库表;
B、updateonly模式时,为更新目标数据库表存的内容,并且原来不存在的数据也不导入到数据库表;

2、当指定update-key,且关系型数据库表不存在主键时:
A、allowinsert模式时,为全部数据追加导入到数据库表;
B、updateonly模式时,为更新目标数据库表存的内容,并且原来不存在的数据也不导入到数据库表;

3、当不指定update-key,且关系型数据库表存在主键时:
A、allowinsert模式时,报主键冲突,数据无变化;
B、updateonly模式时,报主键冲突,数据无变化;

4、当不指定update-key,且关系型数据库表不存在主键时:
A、allowinsert模式时,为全部数据追加导入到数据库表;
B、updateonly模式时,为全部数据追加导入到数据库表;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值