解决sqoop导入关系库更新联合主键的问题

解决sqoop导入关系库更新联合主键的问题,把数据从hive中导入关系库,如果关系库表有联合主键的情况,且需要把新导入的数据更新原来的数据。


以下提供参考的示例:

1、创建关系库表

[sql]  view plain copy
  1. CREATE TABLE  
  2. test123  
  3. (  
  4. id INT NOT NULL,  
  5. name VARCHAR(25) NOT NULL,  
  6. age INT,  
  7. PRIMARY KEY (id, name)  
  8. )  
  9. ENGINE=MyISAM DEFAULT CHARSET=utf8  

2、创建hive表

[sql]  view plain copy
  1. drop table default.test123;  
  2. create table default.test123  
  3. (  
  4.    id int,  
  5.    name                string,  
  6.    age                  int  
  7. )  
  8. ROW FORMAT DELIMITED fields terminated by '\t'  
  9. STORED AS TEXTFILE;  

导入测试数据:

[sql]  view plain copy
  1. insert overwrite table default.test123 select 1,'bill',5 from default.kwu_test limit 1;  

3、sqoop导入mysql数据库

[plain]  view plain copy
  1. sqoop export  --connect jdbc:mysql://10.130.2.245:3306/test --update-key "id,name" --update-mode allowinsert  --username kwu  --password '123456'  --table test123  --fields-terminated-by '\t' --columns "id,name,age" --export-dir /hive/warehouse/test123  

说明: 

1)  -update-key 指定联合主键的值

2)  --update-mode allowinsert 指定更新的模式为可插入,默认为 updateonly

修改测试数据:

[sql]  view plain copy
  1. insert overwrite table default.test123 select 1,'bill',6 from default.kwu_test limit 1;  


查看mysql数据库中age已经修改为6.



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值