Hi Gunja,
There are some technical difference between Oracle and Postgres:
Oracle: By default, column names are case-insensitive. If you create a column EMP_ID, Oracle treats it the same as emp_id or Emp_Id. Internally, Oracle stores names in uppercase, but queries are case-insensitive unless you use quotes.
PostgreSQL: By default, column names are lowercase unless double-quoted.
Based on the snaps documentation:
Insert Snap: forgiving with case โ works without mapping.
Update & Upsert Snaps: strict with column names โ require exact case match. (columns must match the upstream field names exactly, including case).
To sum up :
Bulk Upsert snap internal behaviour ; The primary keys are used for conflicts handling which require Case-sensitive (exact match) and consequenctly fails if upstream column names โ table columns.
Best practice:
Use the mapper snap to set columns to lowercase, before passing data to the Postgres Bulk Upsert Snap. (I would avoid forcing the Postgres target table columns name to match the source Oracle ones)