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.
尝试了几个单引号/双引号和转义$条件的组合,还使用了--where开关。
ps:条件不是数字(它适用于x<10左右的情况,但不适用于字符串或日期)
2条答案
按热度按时间nue99wik1#
可以使用的解决方法:-选项文件
复制选项文件中的查询并使用开关。
选项文件可能如下所示:
注意:不确定这是否是一个特定的版本问题,但是——直接在命令中查询只是拒绝使用$conditions(是的,我试着用\和其他几个引号组合来转义)
o3imoua42#
听你的指挥
--split-by=id
应该是--split-by=a.id
,我会用join
而不是增加额外的where
条件,也可以将日期转换为(指定的字符串值)VARCHR
(使用sybase特定函数)