Как заполнить таблицу с помощью шага 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 с использованием табличного ввода и вывода. В обеих БД у меня есть объекты в верхнем регистре.
Для правильной работы я сделал следующие шаги:
- Во вводе таблицы (MySQL) объекты тоже прописные, но я набирал строчные, и это сработало, и я не устанавливал никаких специальных опций в соединении с БД.
- В выводе таблицы (PostgreSQL) я набрал все прописными буквами (схему, имя таблицы и столбцы), а также установил «указать поля базы данных» (нажав «Получить поля»).
- В целевом соединении с БД (PostgreSQL) я поставил параметры (в разделе «Дополнительно»): «Цитировать все в базе данных» и «Сохранить регистр зарезервированных слов».
PS: Ах, последний вариант, потому что я обнаружил, что была еще одна проблема с моими полями: там был столбец под названием «Admin» (да, ребята, они создали столбец с верблюжьим регистром, используя зарезервированное слово!) И для этого причина, по которой я должен поставить «Сохранить регистр зарезервированных слов» и ввести его как «Администратор» (без кавычек и в верблюжьем регистре) в выводе таблицы.