如何根据多列从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并且它会抛出错误。需要帮助。
答案 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;