sqoop数据导入

Sqoop 数据迁移详解
本文详细介绍了Sqoop的安装部署、常用命令及参数,重点讲解了数据导入与导出的操作,包括全量导入、导入指定列、使用SQL查询导入、从数据库到Hive的迁移,以及如何将数据导入Hbase。同时,还提到了Sqoop在处理数据库连接和错误排查方面的方法。

Sqoop安装部署 :https://blog.youkuaiyun.com/weixin_45102492/article/details/104600343
sqoop的一些常用命令及参数 :https://blog.youkuaiyun.com/weixin_45102492/article/details/92438970
sqoop数据导入 :https://blog.youkuaiyun.com/weixin_45102492/article/details/90727928
Sqoop数据导出 :https://blog.youkuaiyun.com/weixin_45102492/article/details/104675105
Sqoop之hive的job :https://blog.youkuaiyun.com/weixin_45102492/article/details/104608162
Sqoop抽取数据常见错误 :https://blog.youkuaiyun.com/weixin_45102492/article/details/104608006

sqoop检测与数据库的连接

sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password ******

在这里插入图片描述
sqoop导入数据,其中localhost可以写成主机的ip或主机名字

全部导入

sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--target-dir /hyk/data/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

导入指定的列到HDFS

sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--columns 'id,course' \
--target-dir /hyk/data/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

提示:columns中如果涉及到多列并且不指定–fields-terminated-by分割符,mysql中导出默认用逗号分隔

参数同性:

参数参数描述
–tablemysql中的表
–delete-target-dir如果hdfs中的目标目录存在, 则删除
–target-dir导入hdfs中的目录
–split-by切分工作单元, 后面需要指定column
-m使用n个map task来并行导入。一般和–split-by搭配使用
–columns导入指定列,和table搭配使用
–fields-terminated-by指定导入数据每列直接的分割符
–driver指定mysql数据库驱动
–where指定条件
–query指定运行的sql语句,不能和–table搭配使用

查询导入

sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
 --query 'select id,course,score from dept where id > 6 and $CONDITIONS' \
--target-dir /hyk/data/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

提示:must contain '$CONDITIONS' in WHERE clause.
如果query后使用的是双引号,则$CONDITIONS前必须加转移符,防止shell识别为自己的变量。如下单引号和双引号的区别:

--query  'select id,course,score from dept where id > 6 and $CONDITIONS'
--query  "select id,course,score from dept where id > 6 and \$CONDITIONS"

使用sqoop关键字筛选查询导入数据

sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--target-dir /hyk/data/test \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--where "id=1"

从数据库导入到hive

 sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table sqoop_db.dept_ods

提示:该过程分为两步,第一步将数据导入到HDFS,第二步将导入到HDFS的数据迁移到Hive仓库

sqoop导入到hive的分区表

 sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--num-mappers 1 \
--hive-import \
--hive-partition-key 'dept_day' \
--hive-partition-value '20191202' \
--target-dir /hyk/data/dept1 \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table sqoop_db.dept_ods \
--query 'select * from dept where $CONDITIONS'

RDBMS到Hbase

 sqoop import \
--connect jdbc:mysql://localhost:3306/hyk \
--driver com.mysql.jdbc.Driver \
--username root \
--password 123456 \
--table dept \
--columns "id,course,score" \
--column-family "info" \
--hbase-create-table \
--hbase-row-key "id" \
--hbase-table "hbase_dept" \
--num-mappers 1 \
--split-by id
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值