2014-03-18 2 views
1

При импорте данных из MySQL в Hive мне нужно сбросить два символа +7 по номеру телефона. Следующий запрос возвращает ошибку SQL. Какую команду следует использовать replace?Sqoop: заменить charatcters при импорте из MySQL в Hive?

sqoop import --connect jdbc:mysql://server/db --username xxxx --password yyyy --query 'select name, last_name, email, second_name, Replace(personal_phone, '+7', ''), Replace(mobile, '+7', ''), Replace(phone, '+7', '') from user where $CONDITIONS' --target-dir /data/test -m 1 --null-string '\\N' --null-non-string '\\N' --hive-import --hive-table user_inf

ответ

0

Команда REPLACE выглядит правильно. Ошибка может быть вызвана кавычками, так как вы использовали одинарные кавычки в начале. Я изменил его на двойные кавычки в SQL-запросе. Это должно работать:

sqoop import --connect jdbc:mysql://server/db --username xxxx --password yyyy --query "select name, last_name, email, second_name, Replace(personal_phone, '+7', ''), Replace(mobile, '+7', ''), Replace(phone, '+7', '') from user where $CONDITIONS" --target-dir /data/test -m 1 --null-string '\\N' --null-non-string '\\N' --hive-import --hive-table user_inf

+0

Да, двойные кавычки помогли, а также добавление обратной косой черты в '\ $ CONDITIONS' ** Несмотря я exception 'FAILED: ParseException строка 1: 190 не может распознать ввод рядом с '' +7 '' ',' '' '' в спецификации столбца' – DarqMoth

+0

Отредактировал свой ответ еще раз. Пожалуйста, попробуйте это. Я не могу проверить эту команду в моей среде, поэтому не могу гарантировать. :) – Neels

+0

Спасибо, вам нужно добавить «как», чтобы это работало (см. Мой ответ) – DarqMoth

0

Это один работает для меня:

sqoop import --connect jdbc:mysql://server/db --username xxxx --password yyyy --query "select name, last_name, email, second_name, Replace(phone, "+7", '') as phone, Replace(mobile, "+7", '') as mobile from test where \$CONDITIONS" --target-dir /data/test -m 1 --null-string '\\N' --null-non-string '\\N' --hive-import --hive-table info

Смежные вопросы