Sqoop是一个用来将hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:mysql,oracle,等)中的数据导入到hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。


1.简介

首先切换到到hadoop用户:su - hadoop

温馨提示:oracle的所有表名列名都要大写!!!

下面的代码,在命令行输入的时候,可能要写成一行

比如第一条需要写成:

sqoop export --table Oracle_table_name --connect jdbc:oracle:thin:@ip:1521:数据库名 --username 用户名 --password 密码 --export-dir hdfs:/user/hive/warehouse/XXX --columns COLUMN1,2,3 --input-fields-terminated-by '\001' --input-lines-terminated-by '\n'

1.导hive表到Oracle

sqoop export
--table Oracle_table_name
--connect jdbc:oracle:thin:@ip:1521:数据库名
--username 用户名
--password 密码
--export-dir hdfs:/user/hive/warehouse/XXX
--columns COLUMN1,2,3,
--input-fields-terminated-by '\001' #或者其他分隔符,比如逗号等
--input-lines-terminated-by '\n'
注意:导hive表是“\001”

解释:

sqoop export

–table Oracle_table_name(// 数据库Oracle的表名)

–connect jdbc:oracle:thin:@ip:1521:数据库名

(//数据库的地址,其中1521为端口号,默认都为1521,ibd为数据库实例名)

–username用户名(//数据库用户名)

–password用户名(//数据库密码)

–export-dir hdfs:/user/hive/warehouse/XXX

(//hdfs上Hive表的绝对路径)

–columns column1, column2…

(//数据库表的所有列名)

–input-fields-terminated-by ‘\001’(列分隔符)

–input-lines-terminated-by ‘\n’ (行分隔符)

2. 查询数据导入到Oracle的数据是否成功

sqoop eval
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username XXX
--password XXX
--query "select * from table_name"

3.导Oracle表到hive表

sqoop import
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--table TABLE_NAME
--columns COLUMN1,2,3...
--hive-import
--hive-table hive_table_name
-m 1

—解释:

TABLE_NAME为oracle表名(切忌:Oracle个表名在命令中必须是大写,不然会报错)

hive_test为hive表名(hive中的这个表可以不用提前建,只用给表名即可,导成功后列名和Oracle表的列名相同)

4. 连接oracle数据库,列出数据库中的表

sqoop list-tables
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx

5.从数据库导出表的数据到HDFS文件(这个比较实用)

sqoop import
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--table DD
--m 1
--target-dir /home/dpt

解释:

DD为oracle表名(切忌:Oracle表名在命令中必须是大写,不然会报错);

/home/dpt为目的目录,如果没有这个目录则会在hdfs上自动创建这个目录.

导成功后可以用命令查看:

hadoop fs -text /home/dpt/part-m-00000

6.分区表的导入

通过sqoop将hive中的表导入到oracle中

sqoop export
--table t_amap_all
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx
--export-dir hdfs://user/hive/warehouse/
--columns 1,2,3...
--input-fields-terminated-by '\t'
--input-lines-terminated-by '\n';

导入分区表需要指定到具体分区目录,不然会找不到数据,在oracle表中能指定分区这个字段!

分隔符要遵循hive表的具体分隔符

导致任务失败有可能是表名不一致,字段不一致,oracle中的字段大小不够


2.可能遇到的问题

  1. 连接oracle数据库,列出数据库中的表时
sqoop list-tables
--connect jdbc:oracle:thin:@YOUR-IP-ADDRESS:1521:database-name
--username xxx
--password xxx

报错:

16/01/28 09:27:15 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: oracle.jdbc.OracleDriver



1)发现sqoop的安装目录 /usr/lib/sqoop/lib中缺ojdbc驱动包,然后将驱动包(ojdbc6-11.2.0.1.0.jar)复制到your-ip的sqoop安装目录就可以了:

scp ./ojdbc6-11.2.0.1.0.jar root@your-ip:/usr/lib/sqoop/lib


参考链接

1.下载链接:

https://github.com/apache/sqoop

2.官方文档:

http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_introduction

3.官网:

http://sqoop.apache.org/

Sqoop 数据导入导出实践的更多相关文章

  1. Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具

    Sqoop是一款开源的工具,主要用于在Hadoop相关存储(HDFS.Hive.HBase)与传统关系数据库(MySql.Oracle等)间进行数据传递工作.Sqoop最早是作为Hadoop的一个第三 ...

  2. 如何利用sqoop将hive数据导入导出数据到mysql

    运行环境  centos 5.6   hadoop  hive sqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具. 上海尚学堂 ...

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

    一.导入导出数据库常用命令语句 1)列出mysql数据库中的所有数据库命令  #  sqoop list-databases --connect jdbc:mysql://localhost:3306 ...

  4. 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上

    阅读目录 序 导入文件到Hive 将其他表的查询结果导入表 动态分区插入 将SQL语句的值插入到表中 模拟数据文件下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并 ...

  5. Winform开发框架之通用数据导入导出操作的事务性操作完善

    1.通用数据导入导出操作模块回顾 在我的Winfrom开发框架里面,有一个通用的导入模块,它在默默处理这把规范的Excel数据导入到不同的对象表里面,一直用它来快速完成数据导入的工作.很早在随笔< ...

  6. SQL Server数据导入导出的几种方法

    在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总: 1. SQL Server导入导出向导,这种方式是最方便的. 导入向导 ...

  7. 通过 Sqoop1.4.7 将 Mysql5.7、Hive2.3.4、Hbase1.4.9 之间的数据导入导出

    目录 目录 1.什么是 Sqoop? 2.下载应用程序及配置环境变量 2.1.下载 Sqoop 1.4.7 2.2.设置环境变量 2.3.设置安装所需环境 3.安装 Sqoop 1.4.7 3.1.修 ...

  8. HData——ETL 数据导入/导出工具

    HData是一个异构的ETL数据导入/导出工具,致力于使用一个工具解决不同数据源(JDBC.Hive.HDFS.HBase.MongoDB.FTP.Http.CSV.Excel.Kafka等)之间数据 ...

  9. hive之数据导入导出

    hive数据导入导出 一.导入数据4种方式 建表语句 create table test( name string, friends array, children map<string, in ...

随机推荐

  1. Linux初学习

    Linux Linux运行与关闭 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户.多任务.支持多线程和多 CPU 的操作系统. Linux ...

  2. HDU 2782 The Worm Turns (DFS)

    Winston the Worm just woke up in a fresh rectangular patch of earth. The rectangular patch is divide ...

  3. [转载]深入JVM锁机制-synchronized

    转自:http://blog.csdn.net/chen77716/article/details/6618779,并加上少量自己的理解 目前在Java中存在两种锁机制:synchronized和Lo ...

  4. SQL的四种语言:DDL、DML、DCL、TCL

    1. DDL(Data Definition Language) 数据库定义语言statements are used to define the database structure or sche ...

  5. 去除ListView 上下边界蓝色或黄色阴影

    默认的情况下,在 ListView 滑动到顶部或者是底部的时候,会有黄色或者蓝色的阴影出现.在不同的版本号上解决办法是不同的,在 2.3 版本号之前能够在 ListView 的属性中通过设置 andr ...

  6. gem5中event queue执行原理机制具体分析

    搞清楚这个花了两天时间,下面内容为简略版.为了给自己赚点下载用的积分.如须要具体版本号.请点击下载点击打开链接 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...

  7. Python图像处理库PIL的ImageStat模块介绍

    ImageStat模块用于计算整个图像或者图像的一个区域的统计数据. 一.ImageStat模块的函数 1.  Stat 定义1:ImageStat.Stat(image)⇒ Stat instanc ...

  8. java9新特性-10-语法改进:UnderScore(下划线)使用的限制

    1.使用说明 在java 8 中,标识符可以独立使用“_”来命名:   但是,在java 9 中规定“_”不再可以单独命名标识符了,如果使用,会报错:    

  9. PostgreSQL Replication之第七章 理解Linux高可用(2)

    7.2 衡量可用性 可用性是提供商试图保证一定的可用性级别和客户可以期望的可用性或更多.在某些情况下(取决于服务合同) 收取罚款或减少申购费用是意外停机的原因. 可用性的质量使用百分数来衡量:例如,9 ...

  10. js parseFloat 精度问题

    <script type="text/javascript"> //parseFloat function actionoftext(){var price = 10. ...