row_numbers 之间的 ID 不起作用的 Sqoop 导入查询

Sqoop import query where ID between row_numbers does not work

其他问题已经 asked/answered 但 none 可以指向回答我下面的问题:

我只是将有限范围的行(例如,"where _ID between 107 and 307 ")从 MySQL table 导入到 hdfs。我希望查询能够正常工作,因为 MySQL 查询本身是有效的,但我收到 MySQL 语法错误。或者我可以使用上限和下限导入,然后稍后合并文件,这很长而且我不想这样做。

这里是查询:

sqoop import \
--connect jdbc:mysql://localhost/test \
--username=username \
--password=password \
--query 'select * from PURCHASE where purchase_id between 107 and 307 where $CONDITIONS' \
--target-dir /testpurchase \
--split-by purchase_id 

请问,我在查询中是否遗漏了什么,谢谢?

我发现有两个不明确的 WHERE clauses,所以将最后一个 WHERE $CONDITIONS 更改为 AND $CONDITIONS 就可以了。

  sqoop import \
--connect jdbc:mysql://localhost/test \
--username=username \
--password=password \
--query 'select * from PURCHASE WHERE purchase_id between 107 and 307 AND $CONDITIONS' \
--target-dir /testpurchase \
--split-by purchase_id

而且 --boundary-query & --table 也可以完成这项工作

  sqoop import \
--connect jdbc:mysql://localhost/test \
--username=username \
--password=password \
--boundary-query 'Select 107,307 from purchase' \
--table purchase\
--target-dir /testpurchase \