sqoop写mysql_sqoop 常用写法

本文介绍了使用Sqoop从MySQL数据库将数据迁移到Hive的各种方法,包括创建Hive表、全量导入、按列导入、增量导入、使用查询条件过滤数据等,并提供了详细的命令实例。
摘要由CSDN通过智能技术生成

0 参考链接:

http://www.cnblogs.com/cenyuhai/p/3306037.html    sqoop 常用命令整理(一)

http://www.cnblogs.com/cenyuhai/p/3306056.htmlsqoop 常用命令整理(二)

如下是 我工作中遇到的东西,每条语句都本机测试通过:

1 查看所有数据库:

sqoop list-databases --connect  jdbc:mysql://192.168.1.1:3306/ --username root --password 123456

2 查看具体数据库内的表

sqoop list-tables --connect jdbc:mysql://localhost:3306/kellte --username root --password 123456

3  将关系型数据表结构users复制到Hive默认库的表users(此时如果不创建users表的话,那么表是内部表)中:

sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table users

--username root  --password 123456  --hive-table users

--fields-terminated-by "\0001"  --lines-terminated-by "\n";

参数说明:  这两个参数可以不加

--fields-terminated-by "\0001"  是设置每列之间的分隔符,"\0001"是ASCII码中的1,

它也是hive的默认行内分隔符, 而sqoop的默认行内分隔符为","

--lines-terminated-by "\n"  设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;

4  将mysql表student数据拷贝到hive默认库的student表中:  这里使用一个mapreduce来执行

sqoop import --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --passwd 123456

--table  student  --hive-import --hive-table student -m 1;

5 根据列导入数据:   将kettle库下student表的name属性 写入到 hive表的student1中

sqoop import --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --password 123456

--table student  --column 'name'  --hive-import --hive-table student1 -m1;

5.1  column 和  where合用在 mysql导出到hive中:

这是写到hive中的

sqoop import  --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --password 123456

--table student --columns "id,name"  --where "id > 3 and (age = 88 or age = 80)"  -m 1

--target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ",";

这是写到hdfs中的

sqoop import  --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --password 123456

--table student --columns "id,name"  --where "id > 3 and (age = 88 or age = 80)"  -m 1

--hive-import   --hive-table student5;

注意:--target-dir /user/hive/warehouse/userinfos2   可以用  --hive-import --hive-table userinfos2 进行替换

6  增量添加数据:    将Mysql表student5从在主键大于2的基础上导出数据到hive表student5中,其中

mysql表student5的id必须是自增,否则无法执行

sqoop import  --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --password 123456

--table student5  --hive-import --hive-table student5 -m 1 --incremental append --check-column 'id'

--last-value 2;

7    query过滤条件使用:    将mysql表3个字段写到hdfs中,写入到hdfs后,字段以:间隔,各行之间以id间隔

sqoop import  --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --password 123456

--query "select id,name,kc_name from student5 where \$CONDITIONS"

--target-dir /opt/hadoop/hive/warehouse/student5

--fields-terminated-by  “:”  --split-by student5.id;

注意:   上述代码在命令行中需要写在一行, 并且 $CONDITIONS 在 ""内的时候,需要\来转义

使用' 则不需要\转义,  $CONDITIONS和 query必须同时出现。

在oozie 拼接的 sqoop  workflow.xml中 拼接的 sqoop query 时, $CONDITIONS 不需要转义

8  query 将数据写到Hive中  :

sqoop import  --connect jdbc:mysql://192.168.1.1:3306/kettle --username root --password 123456

--query "select id,name,kc_name from student5 where \$CONDITIONS  and id>3"

--target-dir /opt/hadoop/hive/warehouse/student5

--fields-terminated-by  “,”  --split-by student5.id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值