Sqoop Incremental在check-column中导入多个列

时间:2014-05-08 04:03:33

标签: sqoop

如何根据多列从Oracle导入增量数据?

sqoop import --connect jdbc:oracle:thin:ip/dbname --username sqoop --password sqoop \
--query 'SELECT * FROM tablename WHERE $CONDITIONS' \
--check-column column1,column2 \
--incremental lastmodified \
--last-value "2010-05-22 01:01:01" \
-fields-terminated-by \| \
--target-dir /directoryname` --split-by id -m 1

当我使用它时,无法识别column2并且它会抛出错误。需要帮助。

2 个答案:

答案 0 :(得分:1)

这实际上取决于Sqoop Incremental应该对两列做什么......

您想获取column1大于last-value的所有行? COLUMN2?哪个更大?哪个更小?

因为sqoop不知道你想如何组合它们,所以它不支持多列。

但是,您可以自己组合它们并使用函数--check-column。

例如: --check-column nvl(column1,column2) 要么 --check-column maximum(column1,column2)

答案 1 :(得分:0)

- check-column不支持sql函数, 你可以创建一个视图,就像

一样



create view <view_name> as (
  col2,
  col2,
  col1+col2 as col3
)
&#13;
&#13;
&#13;