В PostgreSQL есть таблица «БИЛЕТЫ». Я выполняю задание ETL, используя Pentaho, для заполнения этой таблицы. Существует также графический интерфейс, в котором пользователь вносит изменения, и результат отражается в этой таблице. Поля в таблице следующие:
"OID" Char(36) <------ **PRIMARY KEY**
, "CUSTOMER" VARCHAR(255)
, "TICKETID" VARCHAR(255)
, "PRIO_ORIG" CHAR(36)
, "PRIO_COR" CHAR(36)
, "CATEGORY" VARCHAR(255)
, "OPENDATE_ORIG" TIMESTAMP
, "OPENDATE_COR" TIMESTAMP
, "TTA_ORIG" TIMESTAMP
, "TTA_COR" TIMESTAMP
, "TTA_DUR" DOUBLE PRECISION
, "MTTA_TARGET" DOUBLE PRECISION
, "TTA_REL_ORIG" BOOLEAN
, "TTA_REL_COR" BOOLEAN
, "TTA_DISCOUNT_COR" DOUBLE PRECISION
, "TTA_CHARGE_COR" DOUBLE PRECISION
, "TTR_ORIG" TIMESTAMP
, "TTR_COR" TIMESTAMP
, "TTR_DUR" DOUBLE PRECISION
, "MTTR_TARGET" DOUBLE PRECISION
, "TTR_REL_ORIG" BOOLEAN
, "TTR_REL_COR" BOOLEAN
, "TTR_DISCOUNT_COR" DOUBLE PRECISION
, "TTR_CHARGE_COR" DOUBLE PRECISION
, "COMMENT" VARCHAR(500)
, "USER" CHAR(36)
, "MODIFY_DATE" TIMESTAMP
, "CORRECTED" BOOLEAN
, "OPTIMISTICLOCKFIELD" INTEGER
, "GCRECORD" INTEGER
, "ORIGINATOR" Char(36)
Я хочу обновить таблицу, когда столбцы TICKETID+ORIGINATOR+CUSTOMERS одинаковы. В противном случае будет выполнена вставка.
Как мне это сделать с помощью Pentaho? Подходит ли для этого шаг обновления измерения/поиска или только шаг обновления/вставки будет работать?
Любая помощь приветствуется. Заранее спасибо.
INSERT ... ON CONFLICT DO UPDATE SET column = EXCLUDED.column;
postgresql.org/docs/9.5/static/sql -insert.html - person Eugene Lisitsky   schedule 12.10.2017