-- Die cif wird um ICE-Schlüssel erweitert --freemarker template --(c) 2010 Daniel Quathamer --Liste der cif-Schlüssel des Moduls: --Wird in cif mit key=1 eingefügt <#assign dimension_levels_man = [ {"key":"9003","apnr":"1", "druck":"Männlich", "kurz":"M"}, {"key":"9003","apnr":"2", "druck":"Weiblich", "kurz":"W"}, {"key":"9003","apnr":"3", "druck":"Divers", "kurz":"D"}, {"key":"9003","apnr":"4", "druck":"Unbekannt", "kurz":"U"} ] /> <#assign cif_keys_list = [ {"name":"Geschlecht (Amtl.)", "key":"9003"} ] /> --Liste der cifx-Schlüssel des Moduls: --Wird in cifx mit key=2 eingefügt create temp table tmp_cif2 ( tid serial, key smallint not null , hs integer not null, apnr integer not null , kurz char(10), druck varchar(100), lang_1 char(50), astat INTEGER , parent INTEGER , sortc1 CHAR(10) , bund_apnr CHAR(10) , sprache CHAR(3) ); create temp table tmp_hilf(tid integer); --zuerst Metadaten cif: <#list cif_keys_list as cif_key> select 'cif-Schlüssel ${cif_key.name} key= ${cif_key.key} einfügen '::varchar(255) from xdummy; insert into tmp_cif2(key,hs,apnr,kurz,druck,lang_1 ) select 1,0,${cif_key.key},substring('${cif_key.name}' from 1 for 10),'${cif_key.name}','${cif_key.name}' from xdummy ; <#foreach dimension_level in dimension_levels_man> insert into tmp_cif2(key,hs,apnr,kurz,druck,lang_1 ) select ${dimension_level.key}, 0, ${dimension_level.apnr}, '${dimension_level.kurz}', '${dimension_level.druck}', '${dimension_level.druck}' from xdummy ; --Vorhandene Schlüssel werden ersetzt, nicht vorhandene Schlüssel bleiben: delete from cif where '' || key || '_' || apnr in (select '' || key || '_' || apnr from tmp_cif2 ) ; insert into tmp_hilf select max(tid) from cif; update tmp_hilf set tid=1 where tid is null; insert into cif(tid,key,hs,apnr,kurz,druck,lang_1 -- , -- parent, -- astat, -- bund_apnr, -- sortc1, -- sprache ) select C.tid+H.tid,key,hs,apnr,kurz,druck,lang_1 -- , -- parent, -- astat, -- bund_apnr, -- sortc1, -- sprache from tmp_cif2 C, tmp_hilf H where apnr is not null; drop table tmp_cif2; drop table tmp_hilf; update cif set kurz=substring(druck from 1 for 10) where kurz is null and druck is not null; --Damit die Hochschulnummern in der CIF und in der Hochschulinfo-Tabelle -- uebereinstimmen, ist folgender UPDATE notwendig: update cif set hs = (select hs_nr from hochschulinfo) where hs != 0;