You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1021 lines
29 KiB
1021 lines
29 KiB
<?xml version="1.0" encoding="UTF-8" ?> |
|
<!-- Stylesheet zur Erzeugung verschd. Scripte des ETL-Prozesses wichtig ist Parameter type |
|
|
|
Änderungen |
|
24.6.04 MB blueprintprüfzeile von userid nach variant |
|
16.4.04 MB Blueprintprüfzeile |
|
|
|
--> |
|
<xsl:stylesheet version="2.0" |
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
|
<xsl:param name="job"/> |
|
<xsl:param name="modulname"/> |
|
<xsl:param name="module_path"/> |
|
<xsl:output method="text" name="text"/> |
|
<xsl:variable name="unknown_id" select="999999" /> |
|
<xsl:variable name="unknown" select="Unbekannt" /> |
|
<xsl:template match="/"> |
|
|
|
<xsl:text>-- XML-generiertes SQL-Script fuer psql |
|
--von etl_transfer.xsl |
|
</xsl:text> |
|
|
|
|
|
<xsl:for-each select="/module/etl/etl-step [@id=$job]"> |
|
<xsl:text>--ETL-Transfer </xsl:text><xsl:value-of select="@id" /><xsl:text>: </xsl:text><xsl:value-of select="@name" /><xsl:text> |
|
</xsl:text> |
|
|
|
<xsl:for-each select="etl_transfer"> |
|
<xsl:call-template name="etl_transfer"> |
|
<xsl:with-param name="uniquename" select="../@id"/> |
|
<xsl:with-param name="name" select="../@name"/> |
|
<xsl:with-param name="systeminfo_id" select="/module/@systeminfo_id"/> |
|
|
|
</xsl:call-template> |
|
</xsl:for-each> |
|
|
|
</xsl:for-each> |
|
|
|
|
|
</xsl:template> |
|
|
|
<xsl:template name="etl_transfer"> |
|
<xsl:param name="uniquename"/> |
|
<xsl:param name="name"/> |
|
<xsl:param name="systeminfo_id"/> |
|
|
|
<xsl:call-template name="create_tmp_etl_tables" /> |
|
|
|
<!--zuerst unload:--> |
|
<xsl:variable name="job_uniquename" select="concat('unload_',$uniquename)" /> |
|
<xsl:variable name="job_type" select="'unload'"/> |
|
<xsl:variable name="job_logfile" select="concat('unload_',$uniquename,'.log')"/> |
|
|
|
<xsl:call-template name="fill_job_metadata"> |
|
<xsl:with-param name="uniquename" select="$job_uniquename"/> |
|
<xsl:with-param name="name" select="concat('Entladen ',$name)"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="logfile" select="$job_logfile"/> |
|
</xsl:call-template> |
|
|
|
<xsl:call-template name="etl_params_fuellen" > |
|
<xsl:with-param name="job_uniquename" select="$job_uniquename"/> |
|
<xsl:with-param name="job_type" select="$job_type"/> |
|
</xsl:call-template> |
|
|
|
<xsl:call-template name="etl_steps_fuellen" > |
|
<xsl:with-param name="job_name" select="$job_uniquename" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="job_type" select="$job_type"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
</xsl:call-template> |
|
|
|
<xsl:call-template name="create_etl_step_relations" > |
|
</xsl:call-template> |
|
|
|
<xsl:call-template name="create_etl_step_properties" > |
|
<xsl:with-param name="job_type" select="$job_type"/> |
|
</xsl:call-template> |
|
|
|
<!--dann upload:--> |
|
|
|
<xsl:call-template name="fill_job_metadata"> |
|
<xsl:with-param name="uniquename" select="concat('upload_',$uniquename)"/> |
|
<xsl:with-param name="name" select="concat('Hochladen ',$name)"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="logfile" select="concat('upload_',$uniquename,'.log')"/> |
|
</xsl:call-template> |
|
|
|
<xsl:call-template name="etl_params_fuellen" > |
|
<xsl:with-param name="job_uniquename" select="concat('upload_',$uniquename)"/> |
|
<xsl:with-param name="job_type" select="'upload'"/> |
|
</xsl:call-template> |
|
|
|
<xsl:call-template name="etl_steps_fuellen" > |
|
<xsl:with-param name="job_name" select="concat('upload_',$uniquename)" /> |
|
<xsl:with-param name="job_logfile" select="concat('upload_',$uniquename,'.log')" /> |
|
<xsl:with-param name="job_type" select="'upload'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
</xsl:call-template> |
|
|
|
<xsl:call-template name="create_etl_step_relations" > |
|
</xsl:call-template> |
|
|
|
<xsl:call-template name="create_etl_step_properties" > |
|
<xsl:with-param name="job_type" select="'upload'"/> |
|
</xsl:call-template> |
|
|
|
|
|
<!--TODO Übernahme SQL--> |
|
|
|
<xsl:call-template name="drop_tmp_etl_tables" /> |
|
|
|
</xsl:template> |
|
|
|
<xsl:template name="drop_tmp_load_tables"> |
|
<xsl:for-each select="etl_transfer_tables/etl_transfer_table"> |
|
<xsl:text> |
|
drop table if exists tmp_</xsl:text><xsl:value-of select="@name" /><xsl:text>; |
|
</xsl:text> |
|
</xsl:for-each> |
|
</xsl:template> |
|
<xsl:template name="create_tmp_etl_tables"> |
|
<xsl:text> |
|
create temp table tmp_etl_step( |
|
tid INTEGER, |
|
uniquename VARCHAR(255) , |
|
caption VARCHAR(255) , |
|
systeminfo_id INTEGER not null, |
|
step_type INTEGER, |
|
step_type_uniquename VARCHAR(255), |
|
sortnr SMALLINT not null, |
|
force_continue SMALLINT, |
|
etl_job_id INTEGER , |
|
parent_step_id INTEGER , |
|
parent_step_uniquename varchar(255), |
|
parent_job_uniquename varchar(255), |
|
logfile varchar(255), |
|
custom_step smallint, |
|
already_exists smallint |
|
) |
|
; |
|
|
|
create temp table tmp_etl_job( |
|
tid INTEGER, |
|
uniquename VARCHAR(255) , |
|
caption VARCHAR(255) , |
|
systeminfo_id INTEGER not null, |
|
logfile varchar(255), |
|
already_exists smallint, |
|
custom_job smallint |
|
) |
|
; |
|
|
|
create temp table tmp_etl_job_param( |
|
tid SERIAL not null, |
|
etl_job_id INTEGER , |
|
uniquename VARCHAR(255) not null, |
|
name VARCHAR(255) , |
|
param_default VARCHAR(255) |
|
) |
|
; |
|
|
|
|
|
create temp table tmp_etl_step_property( |
|
tid SERIAL not null, |
|
etl_step_id INTEGER not null, |
|
prop_name VARCHAR(255) , |
|
prop_value text |
|
|
|
) |
|
; |
|
|
|
create temp table tmp_etl_step_relation( |
|
tid SERIAL not null, |
|
step_id INTEGER not null, |
|
parent_step_id INTEGER , |
|
job_id INTEGER not null, |
|
force_continue SMALLINT default 1 , |
|
step_active SMALLINT default 1, |
|
sortnr SMALLINT default 1, |
|
custom_step SMALLINT default 1 |
|
|
|
) |
|
; |
|
|
|
|
|
</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="fill_job_metadata"> |
|
<xsl:param name="uniquename"/> |
|
<xsl:param name="name"/> |
|
<xsl:param name="systeminfo_id"/> |
|
<xsl:param name="logfile"/> |
|
|
|
<xsl:text> |
|
truncate table tmp_etl_job; |
|
truncate table tmp_etl_step; |
|
truncate table tmp_etl_job_param; |
|
truncate table tmp_etl_step_property; |
|
truncate table tmp_etl_step_relation; |
|
|
|
--tids der jobs dürfen sich nicht ändern, daher |
|
-- |
|
-- 1. vorh. Jobs updaten |
|
-- 2. neue Jobs einfügen |
|
-- 3. alte Jobs löschen |
|
|
|
insert into tmp_etl_job(uniquename,caption,systeminfo_id,logfile,already_exists,custom_job) |
|
values ('</xsl:text><xsl:value-of select="$uniquename" /><xsl:text>', |
|
'</xsl:text><xsl:value-of select="$name" /><xsl:text>', |
|
</xsl:text><xsl:value-of select="$systeminfo_id" /><xsl:text>, |
|
'</xsl:text><xsl:value-of select="$logfile" /><xsl:text>',0,2); |
|
|
|
|
|
|
|
update tmp_etl_job set tid=J.tid, |
|
already_exists=1, |
|
caption=J.caption, |
|
logfile=J.logfile, |
|
custom_job=J.custom_job |
|
from etl_job J where J.uniquename=tmp_etl_job.uniquename |
|
and J.systeminfo_id=tmp_etl_job.systeminfo_id |
|
; |
|
|
|
--neue jobs: |
|
insert into etl_job(uniquename,caption,systeminfo_id,custom_job) |
|
select uniquename,caption,systeminfo_id,custom_job |
|
from tmp_etl_job |
|
where already_exists=0; |
|
--tid von neuen Jobs ermitteln: |
|
update tmp_etl_job set tid=(select J.tid |
|
from etl_job J where J.uniquename=tmp_etl_job.uniquename |
|
and J.systeminfo_id=tmp_etl_job.systeminfo_id) |
|
where already_exists=0 |
|
; |
|
|
|
--TODO |
|
--obsolete Jobs: sollen bei Deinstallation des Moduls entfernt werden |
|
|
|
</xsl:text> |
|
|
|
</xsl:template> |
|
|
|
|
|
<xsl:template name="etl_params_fuellen"> |
|
<xsl:param name="job_uniquename" /> |
|
<xsl:param name="job_type" /> |
|
<xsl:for-each select="etl_transfer_params/etl_transfer_param"> |
|
<xsl:text> |
|
insert into tmp_etl_job_param( |
|
etl_job_id , |
|
uniquename, |
|
name , |
|
param_default) |
|
select J.tid, |
|
'</xsl:text><xsl:value-of select="@name" /><xsl:text>', |
|
'</xsl:text><xsl:value-of select="description" /><xsl:text>', |
|
'</xsl:text><xsl:value-of select="default" /><xsl:text>' |
|
from tmp_etl_job J |
|
where J.uniquename='</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>' |
|
; |
|
|
|
</xsl:text> |
|
</xsl:for-each> |
|
|
|
<xsl:text> |
|
insert into tmp_etl_job_param( |
|
etl_job_id , |
|
uniquename, |
|
name , |
|
param_default) |
|
select J.tid, |
|
'FORMAT', |
|
'Format', |
|
'XML' |
|
from tmp_etl_job J |
|
where J.uniquename='</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>' |
|
; |
|
|
|
</xsl:text> |
|
|
|
<xsl:if test="$job_type='unload'"> |
|
<xsl:text> |
|
insert into tmp_etl_job_param( |
|
etl_job_id , |
|
uniquename, |
|
name , |
|
param_default) |
|
select J.tid, |
|
'PATH_TO_OUTPUTFILE', |
|
'Ausgabedatei', |
|
'$SUPERX_DIR/db/</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>.xml' |
|
from tmp_etl_job J |
|
where J.uniquename='</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>' |
|
; |
|
|
|
</xsl:text> |
|
|
|
</xsl:if> |
|
|
|
<xsl:if test="$job_type='upload'"> |
|
<xsl:text> |
|
insert into tmp_etl_job_param( |
|
etl_job_id , |
|
uniquename, |
|
name , |
|
param_default) |
|
select J.tid, |
|
'PATH_TO_INPUTFILE', |
|
'Eingabedatei', |
|
'$SUPERX_DIR/db/</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>.xml' |
|
from tmp_etl_job J |
|
where J.uniquename='</xsl:text><xsl:value-of select="$job_uniquename" /><xsl:text>' |
|
; |
|
|
|
</xsl:text> |
|
|
|
</xsl:if> |
|
|
|
|
|
<xsl:text> |
|
--erst job-params einfügen: |
|
|
|
delete from etl_job_param |
|
where etl_job_id in ( |
|
SELECT distinct |
|
etl_job_id |
|
FROM tmp_etl_job_param ) |
|
; |
|
|
|
insert into etl_job_param |
|
( |
|
etl_job_id, |
|
uniquename, |
|
name, |
|
param_default |
|
) |
|
SELECT |
|
etl_job_id, |
|
uniquename, |
|
name, |
|
param_default |
|
FROM tmp_etl_job_param |
|
; |
|
</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="etl_steps_fuellen" > |
|
<xsl:param name="job_name" /> |
|
<xsl:param name="job_logfile" /> |
|
<xsl:param name="job_type" /> |
|
<xsl:param name="systeminfo_id" /> |
|
<xsl:for-each select="etl_transfer_groups/etl_transfer_group"> |
|
<xsl:variable name="etl_transfer_group_ordnr" select="position()" /> |
|
<xsl:variable name="etl_transfer_group" select="@uniquename" /> |
|
<xsl:variable name="etl_step_msg" select="concat('start_',$job_type,'_',@uniquename)" /> |
|
<xsl:variable name="etl_transfer_group_text" select="." /> |
|
<xsl:text>--Gruppe </xsl:text><xsl:value-of select="$etl_transfer_group" /><xsl:text> |
|
|
|
</xsl:text> |
|
<xsl:call-template name="create_step_table_msg"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$etl_transfer_group_ordnr * 100" /> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="step_name" select="$etl_step_msg" /> |
|
<xsl:with-param name="step_caption" select="$etl_transfer_group_text" /> |
|
</xsl:call-template> |
|
<xsl:for-each select="../../etl_transfer_tables/etl_transfer_table[@transfer_group=$etl_transfer_group]"> |
|
<xsl:variable name="table_name" select="@name" /> |
|
<xsl:variable name="ordnr" select="position()" /> |
|
|
|
<xsl:if test="$job_type='unload'"> |
|
<xsl:text>--Unload </xsl:text><xsl:value-of select="$table_name" /><xsl:text> |
|
|
|
</xsl:text> |
|
|
|
|
|
|
|
<xsl:call-template name="create_step_table_unload"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="($etl_transfer_group_ordnr * 100) + $ordnr" /> |
|
<xsl:with-param name="table_name" select="$table_name"/> |
|
<xsl:with-param name="whereclause" select="whereclause"/> |
|
<xsl:with-param name="orderclause" select="orderclause"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$etl_step_msg"/> |
|
|
|
</xsl:call-template> |
|
|
|
</xsl:if> |
|
|
|
<xsl:if test="$job_type='upload'"> |
|
<xsl:text>--Upload </xsl:text><xsl:value-of select="$table_name" /><xsl:text> |
|
|
|
</xsl:text> |
|
|
|
<xsl:call-template name="create_step_table_upload"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="($etl_transfer_group_ordnr * 100) + $ordnr" /> |
|
<xsl:with-param name="table_name" select="$table_name"/> |
|
<xsl:with-param name="whereclause" select="whereclause"/> |
|
<xsl:with-param name="orderclause" select="orderclause"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$etl_step_msg"/> |
|
|
|
</xsl:call-template> |
|
|
|
</xsl:if> |
|
|
|
</xsl:for-each> |
|
|
|
</xsl:for-each><!--von groups--> |
|
|
|
<xsl:if test="$job_type='upload'"> |
|
<xsl:for-each select="etl_nativeactions/etl_nativeaction"> |
|
<xsl:variable name="etl_nativeaction_ordnr" select="position()" /> |
|
<xsl:variable name="name" select="@name" /> |
|
<xsl:variable name="filename" select="@filename" /> |
|
|
|
<xsl:call-template name="create_step_table_nativeaction"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="10000 + $etl_nativeaction_ordnr" /> |
|
<xsl:with-param name="step_name" select="$name"/> |
|
<xsl:with-param name="step_caption" select="$name"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="''"/> |
|
|
|
</xsl:call-template> |
|
|
|
</xsl:for-each> |
|
</xsl:if> |
|
<xsl:text> |
|
--nun steps einfügen: |
|
|
|
|
|
update tmp_etl_step set step_type=(select T.tid from etl_step_type T |
|
where T.uniquename=tmp_etl_step.step_type_uniquename); |
|
|
|
--select * from tmp_etl_step |
|
--where step_type is null;--_uniquename from tmp_etl_step; |
|
|
|
|
|
--vorhandene Steps erkennen: |
|
|
|
update tmp_etl_step set tid=S.tid, |
|
already_exists=1, |
|
caption=S.caption, |
|
logfile=S.logfile, |
|
custom_step=S.custom_step |
|
from etl_step S where S.uniquename=tmp_etl_step.uniquename |
|
and S.systeminfo_id=tmp_etl_step.systeminfo_id |
|
; |
|
|
|
--neue Steps einfügen: |
|
insert into etl_step( |
|
uniquename, |
|
caption, |
|
systeminfo_id, |
|
step_type_id, |
|
logfile, |
|
custom_step) |
|
select |
|
uniquename, |
|
caption, |
|
systeminfo_id, |
|
step_type, |
|
logfile, |
|
custom_step |
|
FROM tmp_etl_step |
|
where already_exists=0 |
|
; |
|
|
|
--tid von neuen steps ermitteln: |
|
update tmp_etl_step set tid=(select S.tid |
|
from etl_step S where S.uniquename=tmp_etl_step.uniquename |
|
and S.systeminfo_id=tmp_etl_step.systeminfo_id) |
|
where already_exists=0 |
|
; |
|
|
|
--parent ermitteln: |
|
update tmp_etl_step set parent_step_id=(select S.tid |
|
from etl_step S where S.uniquename=tmp_etl_step.parent_step_uniquename |
|
and S.systeminfo_id=tmp_etl_step.systeminfo_id) |
|
; |
|
|
|
|
|
</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="create_etl_step_relations"> |
|
<xsl:text>delete from etl_step_relation |
|
where job_id in (select J.tid |
|
FROM tmp_etl_job J) |
|
and custom_step=2 |
|
; |
|
--jetzt step-relation: |
|
insert into tmp_etl_step_relation( |
|
step_id, |
|
parent_step_id, |
|
job_id, |
|
force_continue, |
|
step_active, |
|
sortnr, |
|
custom_step |
|
) |
|
select |
|
tid, |
|
parent_step_id, |
|
etl_job_id, |
|
0 as force_continue, |
|
1 as step_active, |
|
sortnr, |
|
2 |
|
FROM tmp_etl_step |
|
; |
|
|
|
insert into etl_step_relation( |
|
step_id, |
|
parent_step_id, |
|
job_id, |
|
force_continue, |
|
step_active, |
|
sortnr, |
|
custom_step |
|
) |
|
select |
|
step_id, |
|
parent_step_id, |
|
job_id, |
|
force_continue, |
|
step_active, |
|
sortnr, |
|
custom_step |
|
FROM tmp_etl_step_relation |
|
; |
|
</xsl:text> |
|
|
|
</xsl:template> |
|
<xsl:template name="create_etl_step_properties"> |
|
<xsl:param name="job_type" /> |
|
<xsl:text> |
|
delete from etl_step_property |
|
where etl_step_id in (select T.tid |
|
FROM tmp_etl_step T ) |
|
; |
|
</xsl:text> |
|
|
|
<xsl:for-each select="etl_transfer_groups/etl_transfer_group"> |
|
<xsl:call-template name="create_etl_step_properties_msg"> |
|
<xsl:with-param name="step_uniquename" select="concat('start_',$job_type,'_',@uniquename)"/> |
|
<xsl:with-param name="msg" select="."/> |
|
</xsl:call-template> |
|
</xsl:for-each> |
|
|
|
<xsl:for-each select="etl_transfer_tables/etl_transfer_table"> |
|
<xsl:if test="$job_type='unload'"> |
|
<xsl:call-template name="create_etl_step_properties_unload"> |
|
<xsl:with-param name="step_uniquename" select="concat('unload_',@name)"/> |
|
<xsl:with-param name="table_name" select="@name"/> |
|
<xsl:with-param name="whereclause" select="whereclause"/> |
|
<xsl:with-param name="orderclause" select="orderclause"/> |
|
</xsl:call-template> |
|
</xsl:if> |
|
<!--Upload--> |
|
<xsl:if test="$job_type='upload'"> |
|
<xsl:call-template name="create_etl_step_properties_upload"> |
|
<xsl:with-param name="step_uniquename" select="concat('upload_',@name)"/> |
|
<xsl:with-param name="table_name" select="@name"/> |
|
<xsl:with-param name="whereclause" select="whereclause"/> |
|
</xsl:call-template> |
|
</xsl:if> |
|
</xsl:for-each> |
|
|
|
<xsl:if test="$job_type='upload'"> |
|
<xsl:for-each select="etl_nativeactions/etl_nativeaction"> |
|
<xsl:call-template name="create_etl_step_properties_nativeaction"> |
|
<xsl:with-param name="step_uniquename" select="@name"/> |
|
<xsl:with-param name="filename" select="@filename"/> |
|
</xsl:call-template> |
|
</xsl:for-each> |
|
</xsl:if> |
|
|
|
|
|
<xsl:text> |
|
--einfügen in echte Tabelle: |
|
insert into etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.etl_step_id, |
|
T.prop_name, |
|
prop_value |
|
FROM tmp_etl_step_property T |
|
; |
|
</xsl:text> |
|
|
|
|
|
</xsl:template> |
|
|
|
<xsl:template name="create_etl_step_properties_msg"> |
|
<xsl:param name="step_uniquename" /> |
|
<xsl:param name="msg" /> |
|
|
|
<xsl:text> |
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'msg', |
|
'</xsl:text> |
|
<xsl:value-of select="$msg"/> |
|
<xsl:text>' |
|
as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="$step_uniquename"/><xsl:text>' |
|
; |
|
</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="create_etl_step_properties_nativeaction"> |
|
<xsl:param name="step_uniquename" /> |
|
<xsl:param name="filename" /> |
|
|
|
<xsl:text> |
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'PATH_TO_INPUTFILE', |
|
'</xsl:text> |
|
<xsl:value-of select="$filename"/> |
|
<xsl:text>' |
|
as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="$step_uniquename"/><xsl:text>' |
|
; |
|
</xsl:text> |
|
</xsl:template> |
|
|
|
|
|
<xsl:template name="create_etl_step_properties_unload"> |
|
<xsl:param name="step_uniquename" /> |
|
<xsl:param name="table_name" /> |
|
<xsl:param name="whereclause" /> |
|
<xsl:param name="orderclause" /> |
|
|
|
<xsl:text> |
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'select_stmt', |
|
'select * </xsl:text> |
|
<!--<xsl:call-template name="get_columns_as_comma_delimited_text"> |
|
<xsl:with-param name="table_name" select="$table_name"/> |
|
</xsl:call-template>--> |
|
<xsl:text> from </xsl:text><xsl:value-of select="$table_name"/><xsl:text> </xsl:text> |
|
<xsl:if test="$whereclause !=''"> |
|
<xsl:text> where </xsl:text><xsl:value-of select="$whereclause"/> |
|
</xsl:if> |
|
<xsl:if test="$orderclause !=''"> |
|
<xsl:text> order by </xsl:text><xsl:value-of select="$orderclause"/> |
|
</xsl:if> |
|
<xsl:text>' |
|
as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="$step_uniquename"/><xsl:text>' |
|
; |
|
</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="create_etl_step_properties_upload"> |
|
<xsl:param name="step_uniquename" /> |
|
<xsl:param name="table_name" /> |
|
<xsl:param name="whereclause"/> |
|
|
|
|
|
<!--zuerst tmp_-Tabelle droppen, wenn vorhanden--> |
|
<xsl:text> |
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'select_stmt', |
|
'drop table if exists tmp_</xsl:text><xsl:value-of select="$table_name"/> |
|
<xsl:text>' |
|
as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="concat('drop_tmp_',$table_name)"/><xsl:text>' |
|
; |
|
</xsl:text> |
|
<!--dann tmp_-Tabelle erzeugen--> |
|
<xsl:text> |
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'select_stmt', |
|
'select * </xsl:text> |
|
<!--<xsl:call-template name="get_columns_as_comma_delimited_text"> |
|
<xsl:with-param name="table_name" select="$table_name"/> |
|
</xsl:call-template>--> |
|
<xsl:text> into tmp_</xsl:text><xsl:value-of select="$table_name"/> |
|
<xsl:text> from </xsl:text><xsl:value-of select="$table_name"/><xsl:text> </xsl:text> |
|
<xsl:text> where 1=0' |
|
as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="concat('create_tmp_',$table_name)"/><xsl:text>' |
|
; |
|
</xsl:text> |
|
<!--dann LOAD--> |
|
<xsl:text> |
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'target_table', |
|
'</xsl:text><xsl:value-of select="concat('tmp_',$table_name)"/><xsl:text>' as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="concat('load_tmp_',$table_name)"/><xsl:text>' |
|
; |
|
|
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'format', |
|
'XML' as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="concat('load_tmp_',$table_name)"/><xsl:text>' |
|
; |
|
|
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'search_path', |
|
'/etlAction/unload [@name="unload_</xsl:text><xsl:value-of select="$table_name"/><xsl:text>"]/rs/row' as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="concat('load_tmp_',$table_name)"/><xsl:text>' |
|
; |
|
|
|
insert into tmp_etl_step_property( |
|
etl_step_id, |
|
prop_name, |
|
prop_value) |
|
select |
|
T.tid as etl_step_id, |
|
'path_to_inputfile', |
|
'$PATH_TO_INPUTFILE' as prop_value |
|
|
|
FROM tmp_etl_step T |
|
where uniquename ='</xsl:text><xsl:value-of select="concat('load_tmp_',$table_name)"/><xsl:text>' |
|
; |
|
|
|
</xsl:text> |
|
|
|
</xsl:template> |
|
|
|
<xsl:template name="get_columns_as_comma_delimited_text"> |
|
<xsl:param name="table_name" /> |
|
<xsl:variable name="col_number" select="count(/module/database/table [@name=$table_name]/columns/column)" /> |
|
<xsl:for-each select="/module/database/table [@name=$table_name]/columns/column"> |
|
<xsl:value-of select="@name" /> |
|
<xsl:if test="position() < $col_number"> |
|
<xsl:text>, |
|
</xsl:text> |
|
</xsl:if> |
|
|
|
</xsl:for-each> |
|
</xsl:template> |
|
|
|
<xsl:template name="create_step_table_msg"> |
|
<xsl:param name="job_name" /> |
|
<xsl:param name="job_logfile" /> |
|
<xsl:param name="ordnr" /> |
|
<xsl:param name="systeminfo_id" /> |
|
<xsl:param name="step_name" /> |
|
<xsl:param name="step_caption" /> |
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr" /> |
|
<xsl:with-param name="step_name" select="$step_name" /> |
|
<xsl:with-param name="step_caption" select="$step_caption"/> |
|
<xsl:with-param name="step_type" select="'MSG'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="''"/> |
|
</xsl:call-template> |
|
|
|
</xsl:template> |
|
|
|
<xsl:template name="create_step_table_nativeaction"> |
|
<xsl:param name="job_name" /> |
|
<xsl:param name="job_logfile" /> |
|
<xsl:param name="ordnr" /> |
|
<xsl:param name="systeminfo_id" /> |
|
<xsl:param name="step_name" /> |
|
<xsl:param name="step_caption" /> |
|
<xsl:param name="parent_step" /> |
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr" /> |
|
<xsl:with-param name="step_name" select="$step_name" /> |
|
<xsl:with-param name="step_caption" select="$step_caption"/> |
|
<xsl:with-param name="step_type" select="'DOSQL'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="''"/> |
|
</xsl:call-template> |
|
|
|
</xsl:template> |
|
|
|
<xsl:template name="create_step_table_unload"> |
|
<xsl:param name="job_name" /> |
|
<xsl:param name="job_logfile" /> |
|
<xsl:param name="ordnr" /> |
|
<xsl:param name="table_name" /> |
|
<xsl:param name="whereclause" /> |
|
<xsl:param name="orderclause" /> |
|
<xsl:param name="systeminfo_id" /> |
|
<xsl:param name="parent_step" /> |
|
|
|
<xsl:variable name="step_name" select="concat('unload_',$table_name)" /> |
|
<xsl:variable name="step_caption" select="concat('Entlade ',$table_name)" /> |
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr + 1" /> |
|
<xsl:with-param name="step_name" select="$step_name" /> |
|
<xsl:with-param name="step_caption" select="$step_caption"/> |
|
<xsl:with-param name="step_type" select="'UNLOAD'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$parent_step"/> |
|
</xsl:call-template> |
|
|
|
</xsl:template> |
|
|
|
<xsl:template name="create_step_table_upload"> |
|
<xsl:param name="job_name" /> |
|
<xsl:param name="job_logfile" /> |
|
<xsl:param name="ordnr" /> |
|
<xsl:param name="table_name" /> |
|
<xsl:param name="whereclause" /> |
|
<xsl:param name="orderclause" /> |
|
<xsl:param name="systeminfo_id" /> |
|
<xsl:param name="parent_step" /> |
|
|
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr + 1" /> |
|
<xsl:with-param name="step_name" select="concat('drop_tmp_',$table_name)" /> |
|
<xsl:with-param name="step_caption" select="concat('drop tmp_',$table_name)"/> |
|
<xsl:with-param name="step_type" select="'DOQUERY'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$parent_step"/> |
|
</xsl:call-template> |
|
|
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr + 3" /> |
|
<xsl:with-param name="step_name" select="concat('create_tmp_',$table_name)" /> |
|
<xsl:with-param name="step_caption" select="concat('Erzeuge tmp_',$table_name)"/> |
|
<xsl:with-param name="step_type" select="'DOQUERY'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$parent_step"/> |
|
</xsl:call-template> |
|
|
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr + 5" /> |
|
<xsl:with-param name="step_name" select="concat('load_tmp_',$table_name)" /> |
|
<xsl:with-param name="step_caption" select="concat('Hochladen tmp_',$table_name)"/> |
|
<xsl:with-param name="step_type" select="'LOAD'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$parent_step"/> |
|
</xsl:call-template> |
|
|
|
<!--nur bei Komplettübernahme möglich: |
|
<xsl:variable name="step_name" select="concat('delete_',$table_name)" /> |
|
<xsl:variable name="step_caption" select="concat('Delete tmp_',$table_name)" /> |
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr + 7" /> |
|
<xsl:with-param name="step_name" select="$step_name" /> |
|
<xsl:with-param name="step_caption" select="$step_caption"/> |
|
<xsl:with-param name="step_type" select="'DOQUERY'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$parent_step"/> |
|
</xsl:call-template> |
|
|
|
<xsl:variable name="step_name" select="concat('drop2_tmp_',$table_name)" /> |
|
<xsl:variable name="step_caption" select="concat('drop2 tmp_',$table_name)" /> |
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr + 10" /> |
|
<xsl:with-param name="step_name" select="$step_name" /> |
|
<xsl:with-param name="step_caption" select="$step_caption"/> |
|
<xsl:with-param name="step_type" select="'DOQUERY'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$parent_step"/> |
|
</xsl:call-template> |
|
|
|
|
|
|
|
<xsl:variable name="step_name" select="concat('trans_tmp_',$table_name)" /> |
|
<xsl:variable name="step_caption" select="concat('Trans tmp_',$table_name)" /> |
|
|
|
<xsl:call-template name="create_step"> |
|
<xsl:with-param name="job_name" select="$job_name" /> |
|
<xsl:with-param name="job_logfile" select="$job_logfile" /> |
|
<xsl:with-param name="ordnr" select="$ordnr + 9" /> |
|
<xsl:with-param name="step_name" select="$step_name" /> |
|
<xsl:with-param name="step_caption" select="$step_caption"/> |
|
<xsl:with-param name="step_type" select="'DOQUERY'"/> |
|
<xsl:with-param name="systeminfo_id" select="$systeminfo_id"/> |
|
<xsl:with-param name="parent_step" select="$parent_step"/> |
|
</xsl:call-template> |
|
--> |
|
</xsl:template> |
|
|
|
<xsl:template name="create_step"> |
|
<xsl:param name="job_name" /> |
|
<xsl:param name="job_logfile" /> |
|
<xsl:param name="ordnr" /> |
|
<xsl:param name="step_name" /> |
|
<xsl:param name="step_caption" /> |
|
<xsl:param name="step_type" /> |
|
<xsl:param name="systeminfo_id" /> |
|
<xsl:param name="parent_step" /> |
|
|
|
<xsl:text> |
|
insert into tmp_etl_step( |
|
uniquename , |
|
caption , |
|
systeminfo_id , |
|
step_type_uniquename, |
|
sortnr, |
|
force_continue, |
|
etl_job_id , |
|
parent_step_uniquename, |
|
parent_job_uniquename, |
|
logfile, |
|
custom_step, |
|
already_exists |
|
) |
|
select '</xsl:text><xsl:value-of select="$step_name" /><xsl:text>', |
|
'</xsl:text><xsl:value-of select="$step_caption" /><xsl:text>', |
|
</xsl:text><xsl:value-of select="$systeminfo_id" /><xsl:text>, |
|
'</xsl:text><xsl:value-of select="$step_type" /><xsl:text>' as step_type_uniquename, |
|
</xsl:text><xsl:value-of select="$ordnr" /><xsl:text> + 10 as sortnr, |
|
0 as force_continue, |
|
J.tid as etl_job_id, |
|
'</xsl:text><xsl:value-of select="$parent_step" /><xsl:text>' as parent_step_uniquename, |
|
J.uniquename, |
|
'</xsl:text><xsl:value-of select="$job_logfile" /><xsl:text>' as logfile, |
|
2, |
|
0 |
|
from etl_job J |
|
where J.uniquename='</xsl:text><xsl:value-of select="$job_name" /><xsl:text>' |
|
and J.systeminfo_id=</xsl:text><xsl:value-of select="$systeminfo_id" /><xsl:text>; |
|
|
|
|
|
</xsl:text> |
|
</xsl:template> |
|
|
|
<xsl:template name="drop_tmp_etl_tables"> |
|
<xsl:text> |
|
|
|
drop table tmp_etl_step; |
|
drop table tmp_etl_job; |
|
drop table tmp_etl_job_param; |
|
drop table tmp_etl_step_property; |
|
drop table tmp_etl_step_relation; |
|
|
|
</xsl:text> |
|
</xsl:template> |
|
</xsl:stylesheet>
|
|
|