2017-01-16 4 views
0

В моем преобразовании я хочу иметь динамические свойства подключения к базе данных, такие как имя хоста/порт/имя пользователя и пароль. И мой профиль bash уже содержит эту информацию. Как я могу получить доступ к этим переменным профиля bash через мое преобразование?Доступ к переменным bash в Pentaho Kettle

Thank you,

Soira.

+0

Покажите нам свой '.bash_profile' и как именно вы хотите получить информацию с минимальным примером ввода и выводом? – Inian

+0

@Inian, мои bash_profile содержат следующие данные, DB_PORT = 27017 DB_HOST = локальный DB_NAME = тест DB_PASSWORD = welcome1! DB_USERNAME = testUser –

+0

Вышеприведенный комментарий не нужен и неуважителен. Ваш вопрос не приложил усилий к правильному исследованию и просто попросил простой _code_, и, кроме того, его просто _NOT_, соответствующий [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) и не имеет поддающегося проверке ввода, т. е. предполагая, что у нас есть решение для вас, как мы его тестируем? Прочитайте [Как создать минимальный, полный и проверяемый пример] (http://stackoverflow.com/help/mcve), прежде чем задавать вопросы. Удачи! – Inian

ответ

0

Лучший способ объявить переменные pentaho - добавить их в файл $HOME/.kettle/kettle.properties.

Эти переменные могут быть доступны в ваших заданиях/преобразованиях с помощью ${..} так же, как переменные bash.

Пример,

В kettle.properties,

DB_HOST=xx.xx.xx.xx 

В трансформации,

${DB_HOST} 
+0

Спасибо, я пробовал. Но если я использую этот метод, мне, возможно, придется использовать отдельный файл свойств для каждой среды. Потому что у меня есть приложение, работающее на этих переменных bash. Я думаю о том, чтобы использовать то же самое для трансформации. поэтому мне не нужно менять 2 места при изменении значений переменных. Есть ли у вас какие-либо идеи по этому поводу? –

+0

Если вы обновляете переменные 2 файла, вы можете очень хорошо прочитать 'kettle.properties' для чтения переменных из среды. – franklinsijo

+0

Да абсолютно. Благодарю. –

0

, определенного пользователем, Java, Экспрессия шаг может извлечь все переменные окружения:

Строка значения = java.lang.String.join("|", System.getenv().values())

строковые имена = java.lang.String.join("|", System.getenv().keySet())

Теперь Split-Field-To-Ряды с нумерацией позволило подготовит Merge-Join на RowNumber в конечном счете, получая поток с поля (имя, значение).

Не стесняйтесь.

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