Как передать строковое значение в запросе в свободной форме sqoop - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно импортировать данные с нескольких разных серверов SQL, которые имеют одинаковые таблицы, структуру таблиц и даже значение первичного ключа.Таким образом, чтобы однозначно идентифицировать запись, принятую с SQLserver, скажем, «S1», я хочу иметь дополнительный столбец - скажем, «serverName» в моих таблицах кустов.Как я должен добавить это в моем запросе в свободной форме sqoop.

Все, что я хочу сделать, это передать жестко закодированное значение вместе со списком столбцов, чтобы значение жестко закодированного столбца было сохранено в Hive.После этого я могу позаботиться о динамическом изменении этого значения в зависимости от данных сервера.

sqoop import --connect "connDetails" --username "user"  --password "pass" --query "select col1, col2, col3, 'S1' from table where \$CONDITIONS" --hive-import --hive-overwrite --hive-table stg.T1  --split-by col1 --as-textfile  --target-dir T1  --hive-drop-import-delims

S1 - это жестко закодированное значение.В SQL-смысле я думаю, что когда вы передаете значение жесткого кода, то же самое возвращается как результат запроса.Любые указатели, как это сделать?Заранее спасибо.

1 Ответ

0 голосов
/ 29 апреля 2019

решено: на самом деле просто нужен псевдоним для значения в жестком коде.Таким образом, выполненная команда sqoop -

sqoop import --connect "connDetails" --username "user"  --password "pass" --query "select col1, col2, col3, 'S1' as serverName from table where \$CONDITIONS" --hive-import --hive-overwrite --hive-table stg.T1  --split-by col1 --as-textfile  --target-dir T1  --hive-drop-import-delims
...