merge into contacts c
  using (select '<@SOURCEID@>:<@ADDRESS_BOOK_ID@>' id, upper('<@ENTRY_GENDER@>') gender, 
  '<@ENTRY_FIRSTNAME@>' firstname, '<@ENTRY_LASTNAME@>' lastname 
  ,'<@ENTRY_STREET_ADDRESS@> <@ENTRY_STREET_NO@> <@ENTRY_STREET_NO_ADD@>' address ,
  '<@ENTRY_CITY@>' city,
  '<@ENTRY_COMPANY@>' company
  ,'<@ENTRY_STATE@>' state
    ,'<@ENTRY_POSTCODE@>' postal
  ,'<@COUNTRIES_NAME@>' country
 
  
  
  from rdb$database) cd

  on c.USERFIELD5 = cd.id
  when matched then update set 
  firstname = cd.firstname , 
  lastname = cd.lastname,
  GENDER = cd.gender, 
  ADDRESS = cd.address,
  CITY = cd.city,
  COMPANY = cd.company,
  COUNTRY = cd.country,
  STATE = cd.state,
  ZIP = cd.postal
   when not matched then  
   INSERT  (RECORDID, RESOURCEID, FIRSTNAME, LASTNAME, 
   COMPANY, GENDER, 
   ADDRESS, CITY, STATE, ZIP, COUNTRY, USERFIELD5)
 VALUES (
GEN_ID(GEN_CONTACTS_ID,1), 
1, 
 cd.firstname, 
cd.lastname, 
cd.company, 
cd.gender, 
cd.address, 
cd.city, 
cd.state, 
cd.postal, 
cd.country, 
cd.id 

)

 