Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

import :Import a table from a database to HDFS
         sqoop import 的本质是:就是MR程序
 导入数据到HDFS
        (1)把Oracle中的EMP表 导入到HDFS中
[[email protected] conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password tiger --table EMP --target-dir /sqoop/import/emp1
            在HDFS中查看输出的结果

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase
            
        (2)导入EMP表,指定导入的列
[[email protected] conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password tiger --table EMP --columns ENAME,SAL --target-dir /sqoop/import/emp2
         Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase   Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase


        (3)导入Oracle中的订单表到HDFS中:sh用户 sales表(订单表:大约92万条数据)

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase
[[email protected] conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SH --password sh --table SALES --target-dir /sqoop/import/sales 
            错误日志:
            ERROR tool.ImportTool: Error during import: No primary key could be found for table SALES. Please specify one with --split-by or perform a sequential import with '-m 1'
        没有设置主键,需要在后面加入-m 1   ,表示设置一个分区

[[email protected] conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SH --password sh --table SALES --target-dir /sqoop/import/sales1 -m 1

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

根据上图显示,只有一个分区

把MySQL中的card表导入到HDFS中,card表大概70万条数据

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

[[email protected] ~]# sqoop import --connect jdbc:mysql://192.168.100.11:3306/Test_DB --username root --password 123123 --table card --target-dir /sqoop/import/card
在HDFS中查看

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

把Oracle中的EMP表导入到Hive中

首先,因为Hive中默认的数据库是default,为了测试需要在Hive中创建一个数据库test

hive> create database test;
Moved: 'hdfs://bigdata11:9000/user/hive/warehouse/test.db' to trash at: hdfs://bigdata11:9000/user/root/.Trash/Current
Moved: 'hdfs://bigdata11:9000/user/hive/warehouse/test.db' to trash at: hdfs://bigdata11:9000/user/root/.Trash/Current
OK
Time taken: 4.91 seconds
hive> show databases;
OK
default
test
[[email protected] conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password tiger --table EMP  -m 1 --hive-import --hive-database test
在Hive中查看结果

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

把Oracle中的EMP表导入到HBase(需要事先将表创建)
[[email protected] conf]#sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521:orcl --username SCOTT --password tiger --table EMP --columns empno,ename,sal,deptno --hbase-table emp --hbase-row-key empno --column-family empinfo 

在HBase中查看emp表

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

codegen:将关系数据库表映射为一个Java文件、Java class类、以及相关的jar包

实例:在Linux上新建目录  mkdir /root/sqoop

[[email protected] conf]# sqoop codegen --connet jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password --table EMP --outdir /root/sqoop
Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

create-hive-table: 生成与关系数据库表的表结构对应的HIVE表

实例:把Oracle中的EMP表创建在Hive中

[[email protected] conf]# sqoop create-hive-table --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --table EMP --hive-table emphive
查看Hive中的emphive的表结构

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

eval:以快速地使用SQL语句对关系数据库进行操作,这可以使得在使用import这种工具进行数据导入的时候,可以预先了解相关的SQL语句是否正确,并能将结果显示在控制台。

示例:

[[email protected] conf]# sqoop eval --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password tiger --query 'select * from emp where deptno=10'
Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

list-databases :List available databases on a server

对MySQL来说是列出所有MySQL的库名

[[email protected] ~]# sqoop list-databases --connect jdbc:mysql://192.168.100.11:3306/ --username root --password 123123
Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

对Oracle来说是列出当前数据库中所有的用户名

[[email protected] ~]# sqoop list-databases --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SYSTEM --password password

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

export:从hdfs中导数据到关系数据库中

示例:将HDFS的emp表导入到MySQL 中

首先需要在MySQL中创建和HDFS中的emp一样的表结构

[email protected] 23:21:  [sqoop]> create table emp(empno int,ename varchar(20),job varchar(20),mgr int,hiredate varchar(30),sal int,comm mm int,deptno int);
 

查看MySQL的表结构

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

执行导出操作:

[[email protected] input]# sqoop export --connect jdbc:mysql://192.168.100.11:3306/sqoop --username root --password 123123 --table emp --export-dir /scott
 

在MySQL中查看emp表

Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase