Как использовать интеграцию данных Pentaho для копирования столбцов между таблицами - PullRequest
4 голосов
/ 28 ноября 2011

Я думал, что это будет легкая задача, но, поскольку я новичок в PDI, я не мог выясните, какое преобразование выбрать, чтобы выполнить следующее:

Я использую Pentaho Data Integration (бывший Kettle), Community Edition, для сопоставления / копирования значений из одной таблицы ('tasksA') одной базы данных 'A' в другую таблицу 'tasksB' в другой базе данных B. tasksA имеет столбец 'description', и я хочу скопировать эти значения в столбец 'taskName' в 'tasksB'. Кроме того, я должен скопировать каждое значение 'description' несколько раз, так как в 'tasksB' для каждого значения в 'taskName' имеется несколько строк.

Может быть, это было бы возможно с помощью прямого SQL, но я хотел попробовать Я могу определить это более удобным для чтения с помощью PDI, особенно потому, что на следующем шаге мне придется расширить его на другие задействованные таблицы.

Так что я должен сказать, какое значение «описание» должно быть сопоставлено с тем, какое значение «taskName» и что в каждый кортеж, содержащий это значение (ну, звучит как предложение WHERE ...) в столбце taskName, его следует заменить.

Мои первые эксперименты с шагами «Вход таблицы» и «Выход таблицы» не сработало, когда я просто провел прыжок между ними и изменил базу данных вкладка fields шага «Вывод таблицы», который генерирует операторы «drop column» в результате SQL, который не то, что я хочу. Я не хочу изменять схему, просто скопируйте значения.

Было бы замечательно, если бы кто-то мог указать мне правильные шаги / необходимые преобразования, Я работал над первыми примерами из Pentaho Wiki и получил книгу «Casta et al.», «Pentaho Kettle Solutions». но мог бы узнать, как чтобы решить это. Заранее большое спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 12 июня 2013

@ RFVoltolini имеет хороший ответ. В качестве альтернативы вы могли бы пойти

Ввод таблицы -> Обновление

И соедините вывод ошибки с чем-то другим, например с выводом текстового файла.

0 голосов
/ 19 сентября 2012

Если я правильно понял, вы должны использовать Табличный ввод, связанный с шагом «Вставка / обновление».

На шаге Вставка / обновление вам нужно сообщить ключи из задач A, где следует искатьна задачах.Затем определите, какие поля в задачах B должны быть обновлены: описание (как поле потока) -> taskName (как поле таблицы).

Имейте в виду, что если этот ключ не найден, в задачах B будет вставлена ​​строка,Если это не то, что вы планируете, вам нужно создать что-то вроде: Ввод таблицы -> Поиск в базе данных -> Строки фильтра -> Вставить / обновить

...