Il existe une table 'BILLETS' dans PostgreSQL. J'effectue un travail ETL en utilisant Pentaho pour remplir cette table. Il existe également une interface graphique sur laquelle un utilisateur apporte des modifications et le résultat est reflété dans cette table. Les champs de la table sont:Insérer une mise à jour/fusion/recherche de dimension/mise à jour à l'aide de 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)
Je veux mettre à jour la table lorsque les colonnes TicketID + + INITIATEUR CLIENTS sont les mêmes. Sinon, une insertion sera effectuée.
Comment dois-je faire avec Pentaho? Est-ce que la mise à jour de la dimension/recherche de l'étape est correcte ou simplement l'étape Mettre à jour/Insérer fera le travail?
Toute aide serait grandement appréciée. Merci d'avance.
Existe-t-il un index unique sur les colonnes TICKETID + ORIGINATOR + CLIENTS? Ensuite, vous pouvez utiliser la commande INSERT ... ON CONFLICT DO UPDATE SET colonne = EXCLUDED.column; 'https://www.postgresql.org/docs/9.5/static/sql-insert.html –