您的位置:首页 > 运维架构

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

2015-09-27 16:26 316 查看
解决sqoop导入关系库更新联合主键的问题,把数据从hive中导入关系库,如果关系库表有联合主键的情况,且需要把新导入的数据更新原来的数据。

以下提供参考的示例:

1、创建关系库表

[sql] view
plaincopy

CREATE TABLE

test123

(

id INT NOT NULL,

name VARCHAR(25) NOT NULL,

age INT,

PRIMARY KEY (id, name)

)

ENGINE=MyISAM DEFAULT CHARSET=utf8

2、创建hive表

[sql] view
plaincopy

drop table default.test123;

create table default.test123

(

id int,

name string,

age int

)

ROW FORMAT DELIMITED fields terminated by '\t'

STORED AS TEXTFILE;

导入测试数据:

[sql] view
plaincopy

insert overwrite table default.test123 select 1,'bill',5 from default.kwu_test limit 1;

3、sqoop导入mysql数据库

[plain] view
plaincopy

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
plaincopy

insert overwrite table default.test123 select 1,'bill',6 from default.kwu_test limit 1;

查看mysql数据库中age已经修改为6.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: