Sqoop版本:1.4.6.2.3.4.0-3485
我一直在尝试使用sqoop使用以下命令导入数据:
sqoop import -libjars /usr/local/bfm/lib/java/jConnect-6/6.0.0/jconn3-6.0.0.jar --connect jdbc:sybase:db --username user --password 'pwd' --driver com.sybase.jdbc3.jdbc.SybDriver --query 'SELECT a.* from table1 a,table2 b where b.run_group=a.run_group and a.date<"7/22/2016" AND $CONDITIONS' --target-dir /user/user/a/ --verbose --hive-import --hive-table default.temp_a --split-by id
我收到以下错误:
Invalid column name '7/22/2016'
我已经尝试用双引号括起查询,但后来说:
CONDITIONS: Undefined variable.
尝试了几种单引号/双引号组合并转义$ CONDITIONS并使用--where开关。
PS:条件是非数字的。 (它适用于像x <10左右的情况,但不是在字符串或日期的情况下)
答案 0 :(得分:0)
在您的命令中list1 = ['ad', 'sbe', 'k3', 'lm0']
list2 = ['sb', 'e', 'lm', '0']
list3 = [1, 3]
print f(list1, list2, list3)
>>> ['ad', 'sb', 'e', 'k3', 'lm', '0']
应为--split-by=id
,我会使用--split-by=a.id
而不是添加额外的join
条件,我也会将日期转换为(指定的字符串值){ {1}}(使用sybase特定功能)
where
答案 1 :(得分:0)
可以使用的解决方法:-options-file
将查询复制到选项文件中并使用开关。
选项文件可能是:
--query
select * \
from table t1 \
where t1.field="text" \
and t1.value="value" \
and $CONDITIONS
注意:不确定是否是特定版本问题,但是直接在命令中查询 - 仅拒绝使用$ CONDITIONS。 (是的,我尝试用\和其他几种引用组合来逃避它)