Как заполнить таблицу с помощью шага table_output в Pentaho Data Integration?

Я выполняю работу ETL через Pentaho 7.1. Задача состоит в том, чтобы заполнить таблицу 'PRO_T_TICKETS' в PostgreSQL 9.2 с помощью заданий и преобразований в Пентахо?

Я сопоставил поля таблицы относительно полей потока

Сопоставленные поля

Моя таблица PRO_T_TICKETS содержит схему (имена столбцов) в верхнем регистре. Это причина, по которой я не могу заполнить таблицу PRO_T_TICKETS своим заданием ETL?

Я продублировал шаг TABLE_OUTPUT в PRO_T_TICKETS и изменил поле таблицы назначения на PRO_T_TICKETS2. Pentaho создал новую таблицу со строчной схемой и заполнил данные в ней.

Но я хочу, чтобы эти данные загружались только в таблицу PRO_T_TICKETS и, если возможно, с помощью схемы UPPERCASE.

Я прилагаю всю работу здесь и ошибку, брошенную Пентахо. Ошибка Pentaho Я также попробовал свой запрос, добавив двойные кавычки к именам столбцов, как вы видите в ошибке. Но это не помогло.

Что ты думаешь я должен сделать?

2 ответа

Решение

Когда вы создаете (или изменяете) соединение, выберите Advanced на левой панели и нажмите на Force to upper case или же Force to lower case или даже лучше, Preserve case of reserved words,

Чтобы узнать, какой вариант выбрать, скопируйте 4-ю строку журнала ошибок, начиная с строки INSERT INTO "public"."PRO_T_TICKETS("OID"... в вашем инструменте SQL-разработчика и измените расширенные параметры соединения, пока он не заработает.

Кроме того, во время отладки не используйте batch updates, не используйте lazy conversion на предыдущих шагах, и попробуйте с одним (1) полем, а не со всеми (25).

В качестве дополнения: у меня это сработало, следуя советам AlainD и используя определенные конфигурации, которыми я хотел бы поделиться с вами. У меня есть преобразование потоковых данных из MySQL в PostgreSQL с использованием табличного ввода и вывода. В обеих БД у меня есть объекты в верхнем регистре.

Для правильной работы я сделал следующие шаги:

  1. Во вводе таблицы (MySQL) объекты тоже прописные, но я набирал строчные, и это сработало, и я не устанавливал никаких специальных опций в соединении с БД.
  2. В выводе таблицы (PostgreSQL) я набрал все прописными буквами (схему, имя таблицы и столбцы), а также установил «указать поля базы данных» (нажав «Получить поля»).
  3. В целевом соединении с БД (PostgreSQL) я поставил параметры (в разделе «Дополнительно»): «Цитировать все в базе данных» и «Сохранить регистр зарезервированных слов».

PS: Ах, последний вариант, потому что я обнаружил, что была еще одна проблема с моими полями: там был столбец под названием «Admin» (да, ребята, они создали столбец с верблюжьим регистром, используя зарезервированное слово!) И для этого причина, по которой я должен поставить «Сохранить регистр зарезервированных слов» и ввести его как «Администратор» (без кавычек и в верблюжьем регистре) в выводе таблицы.

Другие вопросы по тегам