解决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.
以下提供参考的示例:
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.
相关文章推荐
- linux的运行级别介绍
- Linux之xz压缩用法
- linux下C语言开发入门
- linux shell
- CentOS 7 中 pptpd安装
- hadoop 第一个程序wordcount执行过程
- Linux下locale: Cannot set LC_CTYPE to default locale: No such file or directory警告
- linux下执行java为什么bash:javac:command not found
- Linux常用命令
- Bash多个配置文件通常用于
- linux vim使用技能
- 实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,
- linux进程监控与自动重启实现
- linux基本知识点
- Linux经常使用的命令(两) - cd
- 第四章 Linux命令
- 【Linux命令-文件管理类】chattr命令和lsattr命令
- kali linux wpscan wordpress
- centos--命令
- Nginx配置文件高亮显示