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

[Author]: kwu

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

1、创建关系库表

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表

drop table default.test123;

create table default.test123

(

id int,

name string,

age int

)

ROW FORMAT DELIMITED fields terminated by '\t'

STORED AS TEXTFILE;

导入测试数据:

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

3、sqoop导入mysql数据库

sqoop export --connect jdbc:mysql://10.130.2.245:3306/test --update-key "id,name" --username kwu --password 'java.netphp' --table test123 --fields-terminated-by '\t' --columns "id,name,age" --export-dir /hive/warehouse/test123

说明: 关键 --update-key 指定联合主键的值

修改测试数据:

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文:http://blog.csdn.net/bdchome/article/details/47343387

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用SqoopHive导入MySQL时,可以选择新增更新模式来处理数据。下面是示例: 假设有一个Hive表"employee,其包含员工的姓名、工号和水信息。现在需要将这些数据导入MySQL"employee"表,并根据工号数据的新增或更新。 首先,保Hive表的数据已经准好。 然后,使用Sqoop命令来执行导入操作。以下是一个示例命令: ``` sqoop import \ --connect jdbc:mysql://localhost:3306/mydatabase \ --username your_username \ --password your_password \ --table employee \ --columns "name, emp_id, salary" \ --hive-table employee \ --hive-import \ --update-mode allowinsert \ --update-key emp_id ``` 在上面的命令,我们指定了MySQL数据的连接信息(地址、用户名和密码),以及要导入的表名。`--columns`参数指定了要导入的列,`--hive-table`参数指定了Hive的表名。 `--hive-import`参数表示将数据导入Hive。 `--update-mode allowinsert`表示允许插入新增的数据,并且根据指定的更新键(`--update-key`参数)来判断是否更新已存在的数据。 `--update-key emp_id`指定了更新键为"emp_id"列,这意味着如果在MySQL存在相同的工号,则更新对应的记录;如果不存在,则插入一条新记录。 请注意,以上是一个简单的示例命令,实际情况可能需要根据你的数据和表结构进行适当的调整。 希望以上范例能帮助到你!如果还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值