Sqoop基本操作

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
以命令行的方式,进行表格的全量和增量的抽取,在不同的数据库的表和表之间进行数据的抽取和数据的迁移。
将导入或导出命令翻译成mapreduce程序来实现。

导入数据

检查是否搭建成功 list-tables 显示表名
sqoop list-tables --connect jdbc:mysql://数据库ip地址或者主机名:3306/数据库名字 --数据库用户名 --password 密码
#查看mysql的表
sqoop list-tables --connect jdbc:mysql://localhost:3306/hive --username root --password 123456
#查看oracle的表
sqoop list-tables --connect jdbc:oracle:thin:@192.168.2.88:1521/ORCL --username scott --password tiger

全量导入

dept表 oracle导入到hive
sqoop import \
--hive-import \
--connect jdbc:oracle:thin:@192.168.153.1:1521/orcl \
--username scott \
--password tiger \
--table DEPT \
--hive-database bigdata \
--fields-terminated-by ','
students表 mysql导入到hive
sqoop import \
--hive-import \
--connect jdbc:mysql://192.168.153.1:3306/db01 \
--username root \
--password 123456 \
--table students \
--hive-database bigdata \
--fields-terminated-by ',' \
-m 1  #-m 1的选项,是当被抽取的表格没有主键的时候添加的选项,如果有主键就不要这一句  数据抽取的时候,相同的表格,只能被抽取一次
导入teachers部分字段到hdfs

提示:导入到hdfs不会自动建表

sqoop import \
--connect jdbc:mysql://192.168.2.109:3306/db01 \
--username root \
--password 123456 \
--target-dir /user/teacher \
--fields-terminated-by "\t" \
--columns tno,tsex \
--table teachers \
-m 1
导入scores表中小于80分的数据到hdfs
 sqoop import \--connect jdbc:mysql://192.168.153.1:3306/db01 \--username root \--password 123456 \--target-dir /user/scores \--fields-terminated-by " " \--query 'select * from scores where degree <80 and $CONDITIONS' \ #提示:必须加 '$CONDITIONS' 如果query后面是双引号,必须加\转义字符,避免shell把CONDITIONS当成变量-m 1
追加导入
sqoop import \
--append \
--connect jdbc:oracle:thin:@192.168.153.1:1521/orcl \
--username scott \
--password tiger \
--table DEPT2 \
--target-dir /user/hive/warehouse/bigdata.db/dept \
--fields-terminated-by ',' \
-m 1
增量导入

第一次把数据导 入后,以后就只能增量导入了,不然数据会有重复

导入t1表所有数据
sqoop import \
--connect jdbc:oracle:thin:@192.168.2.133:1521/orcl \
--username scott \
--password 123456 \
--table T1 \
--incremental append \   #增量导入的模式
--check-column id \ ##增量导入的字段
--last-value 12 \     #从这个数值后为增量数据
--target-dir /user/hive/warehouse/mydb2.db/T1 \
--fields-terminated-by ',' \
--m 1
导入t1表id从6开始后的数据
sqoop import \
--connect jdbc:mysql://192.168.153.1:3306/db01 \
--username root \
--table t1 \
--password 123456 \
--incremental append \
--check-column id \
--target-dir /user/hive/warehouse/bigdata.db/t1 \
--last-value 18 \
-m 1
#--check-column 检查的字段 有主键用主键判断,没有主键用时间判断
#--last-value 最后一次的值
#--incremental append  自增追加

使用脚本

dept表 oracle导入到hive
#!/bin/bash
echo "删除导入记录"
hadoop fs -rm -r /user/root/DEPT
hive -e "drop table if exists bigdata.dept"
sleep 5s
echo "全量导入"
sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.153.1:1521/orcl --username scott --password tiger --table DEPT --hive-database bigdata --fields-terminated-by ','
sleep 5s
hive -e "select * from bigdata.dept"
脚本(增量导入)
#!/bin/bash
max_id=`hive -e 'select ceil(max(id)) from mydb2.c1;'`
max_id=${max_id:3}
#输出最大值
echo '输出最大值:'$max_id
sqoop import \
--connect jdbc:oracle:thin:@192.168.2.133:1521/orcl \
--username scott \
--password 123456 \
--table C1 \
--incremental append \
--check-column id \
--last-value $max_id \
--target-dir /user/hive/warehouse/mydb2.db/c1 \
--fields-terminated-by ',' \
--m 1
导出数据

在Sqoop中,“导出”概念指:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群(RDBMS)中传输数据,叫做:导出,即使用export关键字。(导出需要在关系数据库中自己建表)

sqoop export \
--connect jdbc:oracle:thin:@192.168.153.1:1521/orcl \
--username scott \
--password tiger \
--table T1 \
--export-dir /user/hive/warehouse/t01 \
--input-fields-terminated-by ","

Sqoop导入导出基本操作相关推荐

  1. Sqoop导入导出的时候总是出现等待5分钟的问题解决办法

    25.25.27 Sqoop导入导出的时候总是出现等待5分钟的问题解决办法: HDP3.1 中的 YARN 的 timeline server 默认使用内置的 HBase,不知道为什么,总是过几天就挂 ...

  2. oracle导出数据视频教程,Oracle数据导入导出基本操作示例

    Oracle数据导入导出基本操作示例 数据导出 a.将数据库orcl完全导出,用户名user 密码password 导出到D:\dc.dmp中 exp user/password@orcl   fil ...

  3. 如何完美解决Sqoop导入导出MySQL数据错位问题

    我发现小伙伴们在使用Sqoop把数据从MySQL导入到Hive的过程中经常会遇到数据错位的问题,虽然最后都是通过添加参数的方法来解决这个问题,但是我认为这并不是一个完美的解决方案,所以花了一点时间研究 ...

  4. 【Sqoop】sqoop导入导出

    本文简单介绍Sqoop如下操作: Import: ​ rdbms导入HDFS; ​ rdbms导入Hive: ​ rdbms导入Hbase: Export: ​ Hive导出到rdbms: ​ Hba ...

  5. sqoop导入数据遇到的参数问题 ,导出–staging-table

    sqoop import参数 –query "select XXXXX and $CONDITIONS " 按条件导入 -m1 指定map 在导入的时候采用指定–columns的方 ...

  6. Sqoop安装部署和数据的导入导出案例详解

    目录 一.概述 二.Sqoop的工作机制 三.Sqoop1与Sqoop2架构对比 四.Sqoop安装部署 五.Sqoop的数据导入 1. 列举出所有的数据库 2. 准备表数据 3. 导入数据库表数据到 ...

  7. sqoop导入数据(保持一致性)--staging-table

    sqoop导入数据(保持一致性)–staging-table sqoop import参数 –query "select XXXXX and $CONDITIONS " 按条件导入 ...

  8. 利用sqoop将hive数据导入导出数据到mysql

    http://niuzhenxin.iteye.com/blog/1726414 运行环境  centos 5.6   hadoop  hive sqoop是让hadoop技术支持的clouder公司 ...

  9. mysql数据与Hadoop之间导入导出之Sqoop实例

    前面介绍了sqoop1.4.6的 如何将mysql数据导入Hadoop之Sqoop安装,下面就介绍两者间的数据互通的简单使用命令. 显示mysql数据库的信息,一般sqoop安装测试用 sqoop l ...

最新文章

  1. 设计模式04_抽象工厂模式
  2. 服务器控件调用JS方法
  3. Unable to locate tools.jar
  4. linux 上传文件 rz命令 提示command not found 解决方法
  5. Java笔记-编码方式创建kaptcha验证码
  6. android中利用实现二级联动的效果
  7. linux怎么初始命令,linux 第二季 初始linux 目录以及初始命令
  8. 我的第二个切换图片高亮显示,给力
  9. Windows窗口命令大全
  10. 安全帽检测/人脸识别系统国标GB28181协议云服务EasyGBS搭建智慧工地 助力智慧建筑生态圈
  11. mysql的sql语句没错但是报错_sql语句没错·但是却报错,怎么回事?
  12. 01 JavaScript的前世今生
  13. oracle11g磁盘阵列 pdf,融会贯通 从Oracle11g到SQL Server2008 中文PDF版 16.7MB
  14. 液冷技术或成服务器散热未来趋势
  15. linux电容触摸屏驱动参数,基于FT5x06嵌入式Linux电容触摸屏驱动
  16. python写入文件没反应_记第一个问题——python文件无法写入数据
  17. 5分钟完成核磁共振检查,Facebook的AI技术现在还经不住考验
  18. 第四届高等教育国际研讨会
  19. 数据库审计系统 mysql_数据库审计系统
  20. [数据挖掘理论与案例] 大数据的4个V

热门文章

  1. 检查评分汇总表缺项计算机,综合检查评分表.docx
  2. 骑行318、 2016.7.15
  3. 1055 mysql_mysql8.0.1 报错1055
  4. Linux 路由表和静态路由
  5. pyQt5图片放大和缩小
  6. C++ 算法 元素最大值和最小值
  7. 硅谷录用的计算机专业大学排名,学计算机科学专业,必选硅谷附近的这些加州大学...
  8. arcgis标注牵引线_ArcEngine设置有牵引线的标注
  9. 3D建模京东商品3D展示怎么做?
  10. 关于Flutter中使用 webview_flutter: 1.0.6 打开公众号连接只显示标题不显示内容的记录