解决Sqoop使用—query 导入时不支持别名的问题

原创 2013年12月03日 20:10:44

原因:sqoop解析sql时,直接取的数据库字段的名字,没有取别名。不过sqoop为什么这么做,尚不清楚。

解决方案:修改文件:org.apache.sqoop.manager.SqlManager.java

找到getColumnNamesForRawQuery(String stmt)方法;

找到如下代码

String colName = metadata.getColumnName(i);

        if (colName == null || colName.equals("")){

          colName = metadata.getColumnLabel(i);

       }

改为:

String colName =metadata.getColumnLabel(i);

       if (colName == null || colName.equals("")) {

         colName = metadata.getColumnName(i);

       }

找到getColumnTypesForRawQuery(String stmt)方法;

同样:

找到如下代码

String colName = metadata.getColumnName(i);

        if (colName == null || colName.equals("")){

          colName = metadata.getColumnLabel(i);

       }

改为:

String colName =metadata.getColumnLabel(i);

       if (colName == null || colName.equals("")) {

         colName = metadata.getColumnName(i);

       }

 

重新编译项目,用新编译的该类替换sqoop-1.4.3-cdh4.4.0.jar包中类。并替换sqoop的根目录下的该jar包。问题解决!

本文主要通过对sqoop的远程debug跟踪定位解决的该问题,具体远程debug方法如下:

http://blog.csdn.net/exception_ex/article/details/17166225


注:本文是针对sqoop-1.4.3-cdh4.4.0.jar包进行分析,具体到其他版本需要具体进行测试。

sqoop的--query工作中的实际的使用

需求: 有一个需求,就是需要从hive通过sqoop导数据回oracle,但是导入过程需要用另外一张表记录导入过程,比如导入的时间、导入是否准备中或者运行中、成功或者失败,因为别人需要通过这个标志来...
  • qq_20641565
  • qq_20641565
  • 2016年10月10日 16:55
  • 3452

sqoop常用命令

1、列出mysql数据库中的所有数据库  sqoop list-databases --connect jdbc:mysql://localhost:3306/ -username dyh -pass...
  • duan19056
  • duan19056
  • 2013年12月12日 20:08
  • 28953

sqoop使用入门

sqoop命令 1.codegen:将数据库表生成jar文件 sqoop/bin/sqoop codegen --connect jdbc:mysql://localhost:3306/test_...
  • zhifeiyu2008
  • zhifeiyu2008
  • 2015年12月01日 15:25
  • 1948

sqoop使用中文手册

文章转载自:http://www.zihou.me/html/2014/01/28/9114.html Sqoop中文手册 8,038浏览 1条回复 子猴:Sqo...
  • myrainblues
  • myrainblues
  • 2015年02月09日 17:36
  • 16186

sqoop使用例子

简介: sqoop是工具,一个可以把ORACLE、MYSQL中的数据导入到HDFS、HIVE、HBASE中(反过来也可以)的工具。下面是一些使用的例子。留下做个参考: #从Mysql中抽取数据到HDF...
  • lovemelovemycode
  • lovemelovemycode
  • 2014年11月08日 13:25
  • 1715

Sqoop导入关系数据库到Hive

Sqoop 是 apache 下用于 RDBMS 和 HDFS 互相导数据的工具。本文以 mysql 数据库为例,实现关系数据库导入到 hdfs 和 hive。 1. 安装 Sqoop 使用 ...
  • tswisdom
  • tswisdom
  • 2014年11月24日 23:46
  • 13522

Sqoop1 导入与导出数据

本篇博客主要介绍如何使用Sqoop1.x版本来实现数据的导入与导出,笔者使用的版本为Sqoop1.4.6,安装配置请参考博客: http://blog.csdn.net/hg_harvey/arti...
  • HG_Harvey
  • HG_Harvey
  • 2017年09月14日 21:54
  • 289

sqoop之从oracle导入hbase的问题与sqoop hbase 需要注意的一个问题

转载URL: http://blog.csdn.net/liuxingjiaofu/article/details/6953701 sqoop从oracle导入, 需要有ojdbc6....
  • nysyxxg
  • nysyxxg
  • 2016年03月05日 08:27
  • 961

Sqoop源码浅析

前言Apache Sqoop应该是在hadoop与SQL间上最常用的数据导入导出工具了。最近应为面试,简单看了一下sqoop 1.4.6的源码,整理如下。驱动类——Sqooporg.apache.sq...
  • hammertank
  • hammertank
  • 2016年07月10日 20:37
  • 2346

Sqoop使用实例讲解

sqoop的使用
  • l_lushuang
  • l_lushuang
  • 2017年04月10日 13:43
  • 853
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Sqoop使用—query 导入时不支持别名的问题
举报原因:
原因补充:

(最多只允许输入30个字)