分享

sqoop一次性抽取指定数量的表?

feature09 发表于 2017-9-29 15:12:26 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 10272
sqoop1
有一个mysql库,里面有5张表,但是我只想要其中的三张表。tb_data1,tb_data2,tb_data3
有什么语句可以一次性抽取出来三张么?
bin/sqoop import \
--connect jdbc:mysql://172.20.11.11:3306/kuku \
--username mysql \
--password 123456 \
--table tb_data1 \

-m 2 \
--append \
--target-dir /user/sqoop/test1 \


这里只能每次抽取一张表。
import-all-tables是将五张都抽取出来了。


请问,有什么好的办法嘛?

已有(2)人评论

跳转到指定楼层
qcbb001 发表于 2017-9-29 19:32:05
这三张表 有关系吗?
可以尝试union或则join试试
如下面
关联多表无关系全量进行查询:
[mw_shl_code=bash,true]sqoop import --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --passwd 123456
--query 'select name,age from student1 union all select name,age from student2 where $CONDITIONS'
--target-dir /user/hdfs/test1 --split-by name  --fields-terminated-by  "\t"
--null-string "**"  --null-non-string "##"  -m  1;[/mw_shl_code]

关联多张表关系查询:
[mw_shl_code=bash,true]sqoop import --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --passwd 123456
--query 'select name,kc_name,c_cj from student1 join cjb on s_id = student1.student_id
join kcb on kc_id = cjb.c_id where $CONDITIONS'
--target-dir /user/hdfs/test1 --split-by name  --fields-terminated-by  "\t"
--null-string "**"  --null-non-string "##"  -m  1;[/mw_shl_code]

如果都不行的话,可以在尝试Linux的shell。三个顺序执行。
回复

使用道具 举报

feature09 发表于 2017-9-29 22:20:29
qcbb001 发表于 2017-9-29 19:32
这三张表 有关系吗?
可以尝试union或则join试试
如下面

没有关系的。
就写脚本吧,谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条