Запрос импорта Sqoop, где ID между row_numbers не работает - PullRequest
0 голосов
/ 12 ноября 2018

Были заданы другие вопросы / ответы, но ни один из них не мог указать на ответ на мой вопрос ниже:

Я импортирую только ограниченный диапазон строк (например, «где _ID между 107 и 307») из таблицы MySQLв 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 

Пожалуйста, есть что-нибудь, что я здесь опускаю, спасибо?

1 Ответ

0 голосов
/ 28 ноября 2018

Я обнаружил, что было два неоднозначных 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 \
...