我在Oracle中有这个特定的查询
从call.CALL_IVR_DETAIL_FACT中选择count(*),其中customer_key IN(选择不同的CUSTOMER_KEY来自EDW.WORK_ORDER_DAILY_FACT WHERE WO_CHECKED_IN_DT_KEY BETWEEN' 20141001' AND' 20141031' AND WO_TYPE_KEY =' 7'和OFFICE_ONLY_FLAG_KEY<>' 2')和TIME_KEY之间' 01-OCT-14' AND' 31-OCT-14'
我需要将此查询的结果从Oracle导入到Hive表中。
我的sqoop命令如下
sqoop import --connect' xxxx' --username xxx - 密码xxxx - 查询'从call.CALL_IVR_DETAIL_FACT中选择*,其中customer_key IN(从EDW.WORK_ORDER_DAILY_FACT选择不同的CUSTOMER_KEY,在2014年1月' 20141031' 20141031' 20141001' 20141031&# 39; AND WO_TYPE_KEY =' 7' AND OFFICE_ONLY_FLAG_KEY<>' 2')和TIME_KEY之间' 01-OCT-14' AND' 31-OCT-14' AND $ CONDITIONS' -m 1 --hive-import --hive-table CALL_IVR_DETAIL_FACT --target-dir / apps / hive / warehouse / call_ivr_detail_fact
我收到以下错误:
ERROR manager.SqlManager:执行语句时出错:java.sql.SQLSyntaxErrorException:ORA-00904:" OCT":无效标识符
java.sql.SQLSyntaxErrorException:ORA-00904:" OCT":无效标识符
我插入的查询是否正确?
我应该改变什么?
任何帮助都会很棒!
答案 0 :(得分:0)
阅读docs:
在当前版本的Sqoop中使用自由格式查询的功能仅限于简单查询,其中WHERE子句中没有不明确的投影和OR条件。使用复杂查询(例如具有子查询或连接的查询导致模糊投影)可能会导致意外结果。
似乎您的自由格式查询缺少$CONDITIONS
子句中的WHERE
。此外,Sqoop管理可能有点过于复杂。