瀏覽代碼

DB inkrementelles Laden

Gottstein C11 2 周之前
父節點
當前提交
88c3b61394

+ 13 - 0
Tasks/DB.ini

@@ -0,0 +1,13 @@
+SQL_TEMP="C:\GlobalCube\System\ARI\SQL\temp"
+SQL_BATCH="C:\GlobalCube\System\ARI\SQL\batch"
+SQL_LOGS="C:\GlobalCube\System\ARI\SQL\logs"
+
+SOURCE_SERVER="10.8.143.23"
+SOURCE_USER="gaps"
+SOURCE_PASSWORD="Gcbs12ma"
+SOURCE_DATABASE="Gottstein7x"
+
+DEST_SERVER="localhost\GLOBALCUBE"
+DEST_USER="sa"
+DEST_PASSWORD="Mffu3011#"
+DEST_DATABASE="ARI"

+ 114 - 0
Tasks/config/c11/folders.json

@@ -0,0 +1,114 @@
+[
+  {
+    "id": "_dot_public_folders",
+    "name": "Team Content"
+  },
+  {
+    "id": "i2CF5C815FD834B6982C73CAF5AB63058",
+    "name": "Team Content/Aftersales"
+  },
+  {
+    "id": "i168AB92743F0404E8252C40D6A5AA91B",
+    "name": "Team Content/Aftersales/1. Service"
+  },
+  {
+    "id": "iF0EA2657D65F43A5BFA609F9BED7CB1B",
+    "name": "Team Content/Aftersales/3. FIBU Aftersales"
+  },
+  {
+    "id": "iBEDD272911504CF3868A9DAEA971865E",
+    "name": "Team Content/Dashboard"
+  },
+  {
+    "id": "i7602876DA1634211ADBD4C3892BA508A",
+    "name": "Team Content/Drillthrough"
+  },
+  {
+    "id": "iCBED9F013901414183E7F854C96BEBC3",
+    "name": "Team Content/Finanzbuchhaltung"
+  },
+  {
+    "id": "i1FD2651AE0DD432BBA2955AD68779F41",
+    "name": "Team Content/Forderungen"
+  },
+  {
+    "id": "i17CF2826660D4E6BBD48F850B19EEFF6",
+    "name": "Team Content/GC"
+  },
+  {
+    "id": "i351B5A8441B04519B27BD3F754A91739",
+    "name": "Team Content/GC/2. Teile & Zubeh\u00f6r"
+  },
+  {
+    "id": "i2FC93D0244A0480A80B45CCAB5331ACD",
+    "name": "Team Content/GC/DEMO"
+  },
+  {
+    "id": "iBF7DD7D73C2041A398BD1871AD3DEED5",
+    "name": "Team Content/GC/Packages"
+  },
+  {
+    "id": "i9DBCB5CBE518452E82F0B7C05FC7F4A5",
+    "name": "Team Content/Kalender"
+  },
+  {
+    "id": "i7E633EFA3FA94348AFB4203F4A3250A3",
+    "name": "Team Content/Kalender/Gesch\u00e4ftskalender"
+  },
+  {
+    "id": "i4561BD0AAA2B4E3BB55F752615678B7A",
+    "name": "Team Content/Kalender/Quellendateien"
+  },
+  {
+    "id": "iBADE72D816E6417095708394DA920610",
+    "name": "Team Content/Kalender/Werkzeuge"
+  },
+  {
+    "id": "i2445A99340C4462EB8D2B4BDD68C30F1",
+    "name": "Team Content/ReportOutput"
+  },
+  {
+    "id": "i753A7E6538C64EAC802771163730F9D4",
+    "name": "Team Content/ReportOutput/montags"
+  },
+  {
+    "id": "i645830D663154C968751D9E743B35869",
+    "name": "Team Content/ReportOutput/montags_alle_2_Wochen"
+  },
+  {
+    "id": "iAEB7A02699D548179C237A3AFA04084D",
+    "name": "Team Content/ReportOutput/taeglich"
+  },
+  {
+    "id": "i8E045F876DB843FB979CEA7BC5095B36",
+    "name": "Team Content/Templates"
+  },
+  {
+    "id": "iCC1D259C038F47F1AAE2E9ECF6AD0B36",
+    "name": "Team Content/Templates/Style Reference Reports"
+  },
+  {
+    "id": "iA8FCC3BE170F41099B23E76C68CC29C4",
+    "name": "Team Content/Verkauf"
+  },
+  {
+    "id": "i0AE84F4F923742C2BEF37DC3F353B207",
+    "name": "Team Content/Verkauf/1. Gesamtverkauf"
+  },
+  {
+    "id": "iA54190C0B702423E9F793738DCF5C9DE",
+    "name": "Team Content/Verkauf/2. Neuwagen"
+  },
+  {
+    "id": "i25545F74C1694DCAA40F4CCA2010082F",
+    "name": "Team Content/Verkauf/3. Gebrauchtwagen"
+  },
+  {
+    "id": "i263CE202C727438E93568822A6FD9B61",
+    "name": "Team Content/Verkauf/4. FIBU Verkauf"
+  },
+  {
+    "id": "i83A13D54695F44168E30AE35F452A80B",
+    "name": "Team Content/Zeiterfassung"
+  }
+]

+ 1 - 0
Tasks/config/c11/jobs.json

@@ -0,0 +1 @@
+[]

+ 978 - 0
Tasks/config/c11/reports.json

@@ -0,0 +1,978 @@
+[
+  {
+    "id": "iA0E2555C0504490B8AAF804F3C370D19",
+    "name": "S.01 Service-Gesch\u00e4ftsmetrik",
+    "description": null,
+    "modified": "2024-03-15T09:30:38.478Z",
+    "path": "Team Content/Aftersales/1. Service",
+    "type": "report"
+  },
+  {
+    "id": "i80FCE83478664FA39F90D53DAE8F64AB",
+    "name": "S.02 Service Ums\u00e4tze nach Serviceberatern",
+    "description": null,
+    "modified": "2024-03-15T09:33:20.375Z",
+    "path": "Team Content/Aftersales/1. Service",
+    "type": "report"
+  },
+  {
+    "id": "iA9B4B79BE8254D88ACD65FD9D8BC942B",
+    "name": "S.03 Ranking Serviceberater",
+    "description": null,
+    "modified": "2024-03-15T13:07:03.574Z",
+    "path": "Team Content/Aftersales/1. Service",
+    "type": "report"
+  },
+  {
+    "id": "iA2A3846093CE48388ACD82A08C4282DB",
+    "name": "S.04 Betriebsvergleich",
+    "description": null,
+    "modified": "2024-04-19T11:28:04.264Z",
+    "path": "Team Content/Aftersales/1. Service",
+    "type": "report"
+  },
+  {
+    "id": "i966587C2E8AE4BFDA8C92FE38CA3190F",
+    "name": "S.05 Markenvergleich",
+    "description": null,
+    "modified": "2024-03-15T09:59:18.746Z",
+    "path": "Team Content/Aftersales/1. Service",
+    "type": "report"
+  },
+  {
+    "id": "iA0639FBAACBA47BB99D4380EBA4B90B3",
+    "name": "S.07 Service Rechnungsausgangsbuch",
+    "description": null,
+    "modified": "2024-06-11T16:02:14.677Z",
+    "path": "Team Content/Aftersales/1. Service",
+    "type": "report"
+  },
+  {
+    "id": "i8116CA7038A34A50ABE061435DADCBC3",
+    "name": "S.08 Offene Auftr\u00e4ge nach Serviceberater",
+    "description": null,
+    "modified": "2025-01-27T15:28:09.277Z",
+    "path": "Team Content/Aftersales/1. Service",
+    "type": "report"
+  },
+  {
+    "id": "i41243FDFA882447EBED450B1E6526D27",
+    "name": "S.09 Liste offene Auftr\u00e4ge",
+    "description": null,
+    "modified": "2025-01-28T07:15:36.300Z",
+    "path": "Team Content/Aftersales/1. Service",
+    "type": "report"
+  },
+  {
+    "id": "iEC11F4F1B30E48B889715DB0C3834C1F",
+    "name": "ASF.01 Entw. Zeitreihe mit Zeitraum",
+    "description": null,
+    "modified": "2024-04-17T10:18:22.813Z",
+    "path": "Team Content/Aftersales/3. FIBU Aftersales",
+    "type": "report"
+  },
+  {
+    "id": "i161FFC6D894C47D692B0C49334B179E1",
+    "name": "ASF.02 Kostenstellenbericht DB 3",
+    "description": null,
+    "modified": "2022-09-28T07:14:14.660Z",
+    "path": "Team Content/Aftersales/3. FIBU Aftersales",
+    "type": "report"
+  },
+  {
+    "id": "iCB338F88E32D444C9CE1CAAFC21AA795",
+    "name": "ASF.03 BWA VJ-Soll-Ist-Vergleich",
+    "description": null,
+    "modified": "2024-04-17T14:47:37.131Z",
+    "path": "Team Content/Aftersales/3. FIBU Aftersales",
+    "type": "report"
+  },
+  {
+    "id": "i30407DA376F745DCB90515623BFC4EE8",
+    "name": "ASF.04 Umsatz bis DB 1",
+    "description": null,
+    "modified": "2024-04-17T09:23:54.353Z",
+    "path": "Team Content/Aftersales/3. FIBU Aftersales",
+    "type": "report"
+  },
+  {
+    "id": "iA96EB97CD8E5438486FE20A4D2532DA5",
+    "name": "GW.04 Auslieferungsliste Gebrauchtwagen Detail",
+    "description": null,
+    "modified": "2024-08-08T06:53:03.573Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i7BDE4E5598CD46E7AB41862FB7A2E1AF",
+    "name": "NW.04 Auslieferungsliste Neuwagen Detail",
+    "description": null,
+    "modified": "2024-04-18T06:52:17.684Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i9654DB9674CF40CE99FC660A3AF9B07E",
+    "name": "Rechnungsausgangsbuch",
+    "description": null,
+    "modified": "2022-11-10T09:46:40.112Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i80F5A125715E4F8EB07FB138DA9D20D5",
+    "name": "S.03 Rechnungsausgangsbuch",
+    "description": null,
+    "modified": "2022-11-10T09:34:30.055Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "iFA9BD0DCAD7246E0B1EF657DB956D22C",
+    "name": "S.03 Rechnungsausgangsbuch Detail",
+    "description": null,
+    "modified": "2024-03-12T19:50:15.704Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i4F8669BFC9804DBD92EA7A0037BA61B7",
+    "name": "S.07 Rechnungsausgangsbuch",
+    "description": null,
+    "modified": "2024-03-12T19:50:52.234Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i4BA2B706F7104702BEDAD9770C857C79",
+    "name": "S.07 Service Rechnungsausgangsbuch Detail",
+    "description": null,
+    "modified": "2024-06-11T16:23:33.696Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i6AF237B54B4E494E964A6ACA5816BF3E",
+    "name": "S.07 Service Rechnungsausgangsbuch Detail (1)",
+    "description": null,
+    "modified": "2024-03-18T14:59:05.668Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i6B9BA201A99840DF9313244A6A18F62C",
+    "name": "S.07 Service Rechnungsausgangsbuch Detail (2)",
+    "description": null,
+    "modified": "2024-06-11T16:08:52.222Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i597E71C0F26D4D6AA0A381A198E26F3B",
+    "name": "S.07 Service Rechnungsausgangsbuch Detail Auftrag",
+    "description": null,
+    "modified": "2024-03-25T09:58:45.707Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i7370EC11D70B4E019E3D02CB9BCB9A56",
+    "name": "V.04 Auslieferungsliste Gesamt Detail",
+    "description": null,
+    "modified": "2024-04-18T12:50:59.612Z",
+    "path": "Team Content/Drillthrough",
+    "type": "report"
+  },
+  {
+    "id": "i79493A6F7A474168914BC44395D19A1E",
+    "name": "F.01 Entw. Zeitreihe",
+    "description": null,
+    "modified": "2024-04-08T10:12:39.754Z",
+    "path": "Team Content/Finanzbuchhaltung",
+    "type": "report"
+  },
+  {
+    "id": "iE81896795FE84EB0B4D7C869C414FF06",
+    "name": "F.02 Kostenstellenbericht",
+    "description": null,
+    "modified": "2024-04-08T09:12:34.793Z",
+    "path": "Team Content/Finanzbuchhaltung",
+    "type": "report"
+  },
+  {
+    "id": "iD9CECDE6D6D945B8BD4CC1800A7E6227",
+    "name": "F.03 BWA VJ-Soll-Ist-Vergleich",
+    "description": null,
+    "modified": "2024-05-27T11:13:48.582Z",
+    "path": "Team Content/Finanzbuchhaltung",
+    "type": "report"
+  },
+  {
+    "id": "i74F0F73D4E3F4F24BFDCFDF95174B361",
+    "name": "F.04 T\u00e4gliche Erfolgskontrolle",
+    "description": null,
+    "modified": "2024-04-18T09:47:39.562Z",
+    "path": "Team Content/Finanzbuchhaltung",
+    "type": "report"
+  },
+  {
+    "id": "i0A2E400F3DC94644B04C46024D106006",
+    "name": "F.05 Betriebsvergleich",
+    "description": null,
+    "modified": "2024-04-17T14:46:00.819Z",
+    "path": "Team Content/Finanzbuchhaltung",
+    "type": "report"
+  },
+  {
+    "id": "iB9B0D0CBF34842AAAF950CC6EFB41F36",
+    "name": "F.06 Markenvergleich",
+    "description": null,
+    "modified": "2022-07-28T14:41:08.101Z",
+    "path": "Team Content/Finanzbuchhaltung",
+    "type": "report"
+  },
+  {
+    "id": "iCE029E789DCB4B01884ACFDBC4B873D8",
+    "name": "F.07 Umsatz bis DB1",
+    "description": null,
+    "modified": "2024-11-12T16:18:39.973Z",
+    "path": "Team Content/Finanzbuchhaltung",
+    "type": "report"
+  },
+  {
+    "id": "i0FD35DB8E5C342D8A1E7CB931971C55B",
+    "name": "F.08 Service-Ums\u00e4tze ohne Fremdl. Soll-Ist",
+    "description": null,
+    "modified": "2025-01-02T10:09:47.484Z",
+    "path": "Team Content/Finanzbuchhaltung",
+    "type": "report"
+  },
+  {
+    "id": "iD81B346E2CCE4ED0A295A44C4B563CB5",
+    "name": "OP.01 Offene Posten \u00dcbersicht",
+    "description": null,
+    "modified": "2024-04-23T09:45:00.842Z",
+    "path": "Team Content/Forderungen",
+    "type": "report"
+  },
+  {
+    "id": "iE059E0257AB84A31BF8BB2690D770F66",
+    "name": "OP.02 Offene Posten Liste",
+    "description": null,
+    "modified": "2024-04-23T09:44:38.298Z",
+    "path": "Team Content/Forderungen",
+    "type": "report"
+  },
+  {
+    "id": "i0648D8D8CF5E409BB04CE945D144688C",
+    "name": "OP.03 Offene Posten nach Kunden",
+    "description": null,
+    "modified": "2024-04-23T09:42:48.042Z",
+    "path": "Team Content/Forderungen",
+    "type": "report"
+  },
+  {
+    "id": "i389717070C544113899795A04AD7D190",
+    "name": "OP.04 Offene Posten Liste Verursacher",
+    "description": null,
+    "modified": "2024-11-06T16:02:13.834Z",
+    "path": "Team Content/Forderungen",
+    "type": "report"
+  },
+  {
+    "id": "iB11801F66A5B4C6DA0A8C7D2416FD10C",
+    "name": "OP.05 Offene Posten Liste Verursacher Detail",
+    "description": null,
+    "modified": "2024-04-23T09:39:10.293Z",
+    "path": "Team Content/Forderungen",
+    "type": "report"
+  },
+  {
+    "id": "iE5C45529DC9D4C119BF7E47846C47126",
+    "name": "TZ.01 Teile Ums\u00e4tze (SRD) nach Kundenart",
+    "description": null,
+    "modified": "2024-04-17T08:27:26.381Z",
+    "path": "Team Content/GC/2. Teile & Zubeh\u00f6r",
+    "type": "report"
+  },
+  {
+    "id": "iAA0E00D0A47343F189D45297770061E2",
+    "name": "TZ.02 Teile Ums\u00e4tze (SDR) nach Teileart",
+    "description": null,
+    "modified": "2022-11-09T16:43:20.551Z",
+    "path": "Team Content/GC/2. Teile & Zubeh\u00f6r",
+    "type": "report"
+  },
+  {
+    "id": "iF58B17F8BA654483AF79516C53519ABD",
+    "name": "TZ.03 Teile Ums\u00e4tze (SRD) nach Bewegungsart",
+    "description": null,
+    "modified": "2024-04-17T08:27:48.209Z",
+    "path": "Team Content/GC/2. Teile & Zubeh\u00f6r",
+    "type": "report"
+  },
+  {
+    "id": "i8098AE6E82454D7C9AB910DED19EFB41",
+    "name": "TZ.04 Teile Ums\u00e4tze (SRD) nach Artikelgruppe",
+    "description": null,
+    "modified": "2022-11-09T17:10:54.887Z",
+    "path": "Team Content/GC/2. Teile & Zubeh\u00f6r",
+    "type": "report"
+  },
+  {
+    "id": "iF6BC76F34AA44D7789CDA3CCABB48DBE",
+    "name": "TZ.05 Teile Ums\u00e4tze (SRD) nach Verk\u00e4ufer",
+    "description": null,
+    "modified": "2022-11-09T15:48:10.535Z",
+    "path": "Team Content/GC/2. Teile & Zubeh\u00f6r",
+    "type": "report"
+  },
+  {
+    "id": "iA989673245B2405A99C6AE1EA8D84712",
+    "name": "TZ.06 Teile Ums\u00e4tze (SRD) nach Kunden",
+    "description": null,
+    "modified": "2022-11-09T15:52:32.408Z",
+    "path": "Team Content/GC/2. Teile & Zubeh\u00f6r",
+    "type": "report"
+  },
+  {
+    "id": "i1B0B4A743B8941C9A421839731B5A3FF",
+    "name": "TZ.07 Lagerzug\u00e4nge (SRD) nach Bewegungsart",
+    "description": null,
+    "modified": "2022-11-09T15:56:30.391Z",
+    "path": "Team Content/GC/2. Teile & Zubeh\u00f6r",
+    "type": "report"
+  },
+  {
+    "id": "iCC5D870FAD6D4FE0AD7BF6524635F205",
+    "name": "TZ.08 Lagerzug\u00e4nge (SRD) nach Teileart",
+    "description": null,
+    "modified": "2022-11-09T16:02:13.934Z",
+    "path": "Team Content/GC/2. Teile & Zubeh\u00f6r",
+    "type": "report"
+  },
+  {
+    "id": "iEDC03144C8604716A522E05260AD2314",
+    "name": "S.01 Service-Gesch\u00e4ftsmetrik",
+    "description": null,
+    "modified": "2022-11-10T09:16:42.457Z",
+    "path": "Team Content/GC/DEMO",
+    "type": "report"
+  },
+  {
+    "id": "iBA4384E23BA74F51AFF5F5EDEEA64170",
+    "name": "S.02 Service Ums\u00e4tze nach Serviceberatern",
+    "description": null,
+    "modified": "2022-11-10T09:17:26.207Z",
+    "path": "Team Content/GC/DEMO",
+    "type": "report"
+  },
+  {
+    "id": "i439C4E7595964A7F8260F4A918AE6D6D",
+    "name": "S.03 Ranking Serviceberater",
+    "description": null,
+    "modified": "2022-11-10T09:29:34.019Z",
+    "path": "Team Content/GC/DEMO",
+    "type": "report"
+  },
+  {
+    "id": "i6F55F620B3BE4C9599D8F78B5DFD94E3",
+    "name": "S.04 Betriebsvergleich",
+    "description": null,
+    "modified": "2022-11-10T09:42:20.160Z",
+    "path": "Team Content/GC/DEMO",
+    "type": "report"
+  },
+  {
+    "id": "i6BC2AEA25371429DB6EF2D009F64DAC8",
+    "name": "S.05 Markenvergleich",
+    "description": null,
+    "modified": "2022-11-10T09:43:42.366Z",
+    "path": "Team Content/GC/DEMO",
+    "type": "report"
+  },
+  {
+    "id": "i3DD49BFB6D1C4CE28EC9531C0539CF3A",
+    "name": "S.07 Service Rechnungsausgangsbuch",
+    "description": null,
+    "modified": "2024-03-15T08:52:15.578Z",
+    "path": "Team Content/GC",
+    "type": "report"
+  },
+  {
+    "id": "i14293449DA1D4F7692333E86B31DF2E3",
+    "name": "S.07 Service Rechnungsausgangsbuch_Cube",
+    "description": null,
+    "modified": "2024-03-12T15:07:04.624Z",
+    "path": "Team Content/GC",
+    "type": "report"
+  },
+  {
+    "id": "i7645DA33031244AB974C125B94743FB1",
+    "name": "S.07 Service Rechnungsausgangsbuch_sich_25032024",
+    "description": null,
+    "modified": "2024-03-18T12:21:18.763Z",
+    "path": "Team Content/GC",
+    "type": "report"
+  },
+  {
+    "id": "i43B00C5BB4CB4068A8E5A4B955022301",
+    "name": "S.09 Liste offene Auftr\u00e4ge",
+    "description": null,
+    "modified": "2024-06-07T15:06:32.079Z",
+    "path": "Team Content/GC",
+    "type": "report"
+  },
+  {
+    "id": "i753C4FE036694BEEA45D9BF8F6568E0C",
+    "name": "Version 11.1.3 (Basisbeispiele)",
+    "description": "Diese Basisbeispiele wurden f\u00fcr IBM Cognos Analytics version 11.1.3 konzipiert. In diesen Beispielen werden m\u00f6glicherweise Features verwendet, die in der vorliegenden Version neu sind; m\u00f6glicherweise k\u00f6nnen die Beispiele nicht mit \u00e4lteren Versionen ausgef\u00fchrt werden.",
+    "modified": "2019-04-29T21:21:44.212Z",
+    "path": "Team Content/Kalender",
+    "type": "report"
+  },
+  {
+    "id": "iAD7D69975B5D4180B4CEA9F49E583F63",
+    "name": "Globale Parameter - Datumsauswahlfeld",
+    "description": "Dieser Beispielbericht kann als Quelle f\u00fcr den Import eines globalen Parameters in die IBM Cognos Analytics-Umgebung verwendet werden, der Benutzern die Auswahl des 'Zum-Datums' f\u00fcr ihre Berichte erm\u00f6glicht.",
+    "modified": "2021-03-02T14:50:18.540Z",
+    "path": "Team Content/Kalender/Werkzeuge",
+    "type": "report"
+  },
+  {
+    "id": "i89FC694394204AA5A508C10C3B780C24",
+    "name": "Kalendergeneratorbericht",
+    "description": "Mit diesem Beispielbericht kann eine CSV-Datei generiert werden, die als Basis f\u00fcr einen benutzerdefinierten Kalender verwendet werden kann. Sie k\u00f6nnen das Startdatum (Monat) und die Anzahl der Jahre f\u00fcr die Generierung angeben.",
+    "modified": "2021-03-02T15:01:36.099Z",
+    "path": "Team Content/Kalender/Werkzeuge",
+    "type": "report"
+  },
+  {
+    "id": "i384279710E6B4C1CB0CC1B9CEE63E024",
+    "name": "S.09 Liste offene Auftr\u00e4ge BS",
+    "description": null,
+    "modified": "2024-06-07T15:03:57.875Z",
+    "path": "Team Content/ReportOutput/montags",
+    "type": "report"
+  },
+  {
+    "id": "i2B629DAB5D634B4B87BBF0352F19F029",
+    "name": "S.09 Liste offene Auftr\u00e4ge_[p_AH]",
+    "description": null,
+    "modified": "2024-06-07T15:02:39.091Z",
+    "path": "Team Content/ReportOutput/montags",
+    "type": "report"
+  },
+  {
+    "id": "i8712224DD88540C9867C9D25D00708C5",
+    "name": "Z.03 Zeitspiegel Monteure BS",
+    "description": null,
+    "modified": "2024-04-25T08:40:09.144Z",
+    "path": "Team Content/ReportOutput/montags",
+    "type": "report"
+  },
+  {
+    "id": "iA5C099474CE94B5C8855D4EEEE5844AF",
+    "name": "Z.03 Zeitspiegel Monteure_[p_AH]",
+    "description": null,
+    "modified": "2024-04-23T14:03:01.042Z",
+    "path": "Team Content/ReportOutput/montags",
+    "type": "report"
+  },
+  {
+    "id": "iA00FFD46F6384963A2C8CDDB4AD2963D",
+    "name": "OP.02 Offene Posten Liste BS",
+    "description": null,
+    "modified": "2024-06-05T08:46:35.438Z",
+    "path": "Team Content/ReportOutput/montags_alle_2_Wochen",
+    "type": "report"
+  },
+  {
+    "id": "i88C5A44ACEBE4B2DAA74CACAF0327C34",
+    "name": "OP.02 Offene Posten Liste_[p_AH]",
+    "description": null,
+    "modified": "2024-06-05T08:47:22.947Z",
+    "path": "Team Content/ReportOutput/montags_alle_2_Wochen",
+    "type": "report"
+  },
+  {
+    "id": "i8F1D9FC7CFD24125B7AD0C8EF85C84B6",
+    "name": "F.08 Service-Ums\u00e4tze ohne Fremdl. Soll-Ist_[p_AH]",
+    "description": null,
+    "modified": "2025-01-03T09:25:38.842Z",
+    "path": "Team Content/ReportOutput/taeglich",
+    "type": "report"
+  },
+  {
+    "id": "iF9A57CE18E4A4C0AA89016611342A247",
+    "name": "S.07 Service Rechnungsausgangsbuch BS",
+    "description": null,
+    "modified": "2024-04-25T08:40:15.496Z",
+    "path": "Team Content/ReportOutput/taeglich",
+    "type": "report"
+  },
+  {
+    "id": "i31CF4BADA49C4334AAD8D78C51299386",
+    "name": "S.07 Service Rechnungsausgangsbuch_[p_AH]",
+    "description": null,
+    "modified": "2024-04-23T12:53:05.312Z",
+    "path": "Team Content/ReportOutput/taeglich",
+    "type": "report"
+  },
+  {
+    "id": "i019CA844754E4DD38E69235E2D4EB704",
+    "name": "Z.04 Zeitspiegel Monteure Tagesbericht BS",
+    "description": null,
+    "modified": "2024-04-25T08:40:20.394Z",
+    "path": "Team Content/ReportOutput/taeglich",
+    "type": "report"
+  },
+  {
+    "id": "iA304AD0C418D4CEA93A1F0DD7F0C1E7F",
+    "name": "Z.04 Zeitspiegel Monteure Tagesbericht_[p_AH]",
+    "description": null,
+    "modified": "2024-04-23T07:40:50.713Z",
+    "path": "Team Content/ReportOutput/taeglich",
+    "type": "report"
+  },
+  {
+    "id": "iEF6655F26CD1454F99F32860479061E6",
+    "name": "1 beside 2",
+    "description": "A layout template with a header, a footer, and a body with 2 columns. The second column is divided into 2 rows.",
+    "modified": "2015-11-19T15:37:28.990Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "iD97DFD042C2A47B28645758AFF468794",
+    "name": "1 column",
+    "description": "A layout template with a header, a footer, and a body with an empty column",
+    "modified": "2015-11-19T15:37:41.227Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "iB571789DFDB94EC99D1ED9356B91020D",
+    "name": "2 by 2",
+    "description": "A layout template with a header, a footer, and a body with 2 columns in the top row and 2 in the bottom row",
+    "modified": "2015-11-19T15:37:55.573Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "i87A4BD5AD00945FDB927AD7AF8C9BBDB",
+    "name": "2 by 3",
+    "description": "A layout template with a header, a footer, and a body with 3 rows of 2 columns",
+    "modified": "2015-11-19T15:38:06.277Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "i044D0F0D145846F39CB38DAC91A986B9",
+    "name": "2 columns",
+    "description": "A layout template with a header, a footer, and a body with 2 columns",
+    "modified": "2015-11-19T15:38:17.713Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "iA0063B6C3E97404E98C8E07995B5D525",
+    "name": "2 over 1",
+    "description": "A layout template with a header, a footer, and a body with 2 columns in the top row and 1 in the bottom row",
+    "modified": "2015-11-19T15:39:04.347Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "iCA018D32F10C4030AFCE95AD6DEC3E4F",
+    "name": "2 rows",
+    "description": "A layout template with a header, a footer, and a body with 2 rows",
+    "modified": "2015-11-19T15:40:22.277Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "iB51C2337D92E43CEA9380E13F0260BFD",
+    "name": "3 columns",
+    "description": "A layout template with a header, a footer, and a body with 3 columns",
+    "modified": "2015-11-19T15:40:33.103Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "iE5169BE8A3324AC9BF1501613010D392",
+    "name": "5 tabs",
+    "description": "A layout template with a header, a footer, and 5 tabs. Each tab contains a different layout.",
+    "modified": "2015-11-19T16:52:37.203Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "i2990D9BD83D74938885FC4D160173224",
+    "name": "Blank",
+    "description": "An empty layout template",
+    "modified": "2015-11-19T14:48:05.893Z",
+    "path": "Team Content/Templates",
+    "type": "report"
+  },
+  {
+    "id": "iDC9EFE2C532E4743B5128205AA753423",
+    "name": "Blue",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T15:55:32.767Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "i59218899A3984B9BBEDA7B47C359E984",
+    "name": "Cool blue",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T15:56:50.490Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "i9C41D539393B459EB9DC9319BFAF52BD",
+    "name": "Cool grey",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T15:57:52.447Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "i442B8713B9A74E5C893AA20939D5F7BF",
+    "name": "Dark blue",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T16:44:19.080Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "iEB6D2DD570264A4DA5EBF32945F6A22C",
+    "name": "Dark fluorescent",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T16:45:27.193Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "i5374BDB53AEF4DC9A0EA71740E47491B",
+    "name": "Dark purple",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T16:46:17.787Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "i8A7CE1FFBB664DA8BF1985B86F928290",
+    "name": "Green",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T16:47:09.053Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "i3597E5AA1D264D95A10CEC139ACC7A6F",
+    "name": "Medium grey",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T16:48:00.803Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "i53F6FB99274A4AA09860985B4D49BBE2",
+    "name": "Red",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T16:48:48.373Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "iB2FC794B5A8E4467BE6C72D99AAB7661",
+    "name": "Teal",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T16:49:34.363Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "iC202B2D9437341A9B9B6CAC7E568F73B",
+    "name": "Warm grey",
+    "description": "A Standard Report sample used for styling other reports. It contains only new Local Classes and modified Global Class Extensions.",
+    "modified": "2015-11-20T16:50:24.583Z",
+    "path": "Team Content/Templates/Style Reference Reports",
+    "type": "report"
+  },
+  {
+    "id": "i1271046529AC4C85B8D80557E0BCD871",
+    "name": "V.01 Gesch\u00e4ftsmetrik Gesamtverkauf",
+    "description": null,
+    "modified": "2022-02-18T15:38:24.412Z",
+    "path": "Team Content/Verkauf/1. Gesamtverkauf",
+    "type": "report"
+  },
+  {
+    "id": "iCD72579F56A642C2B53FFF5ED1A93507",
+    "name": "V.02 Verk\u00e4uferbericht Gesamtverkauf",
+    "description": null,
+    "modified": "2022-02-18T15:39:32.628Z",
+    "path": "Team Content/Verkauf/1. Gesamtverkauf",
+    "type": "report"
+  },
+  {
+    "id": "i7E5F5B220B974DEBA5D8C6CE4667A62C",
+    "name": "V.03 Ranking Verk\u00e4ufer Gesamtverkauf",
+    "description": null,
+    "modified": "2022-07-20T12:23:40.147Z",
+    "path": "Team Content/Verkauf/1. Gesamtverkauf",
+    "type": "report"
+  },
+  {
+    "id": "i4733E2C859EA4D2FAD89AF7916336F46",
+    "name": "V.04 Auslieferungsliste Gesamtverkauf",
+    "description": null,
+    "modified": "2022-04-11T16:41:05.434Z",
+    "path": "Team Content/Verkauf/1. Gesamtverkauf",
+    "type": "report"
+  },
+  {
+    "id": "iFD80BC96851A4E4B9A4FD698B451F5DD",
+    "name": "NW.01 Gesch\u00e4ftsmetrik Neuwagen",
+    "description": null,
+    "modified": "2022-02-18T13:25:56.584Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "i9BBEFFED55AD4E13A25EA3708A409C44",
+    "name": "NW.02 Verk\u00e4uferbericht Neuwagen",
+    "description": null,
+    "modified": "2022-02-18T13:34:56.255Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "i0E9D2E0379494D229B771138FC79C791",
+    "name": "NW.03 Ranking Verk\u00e4ufer Neuwagen",
+    "description": null,
+    "modified": "2022-08-02T13:48:56.343Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "i59FA9DBA0C754A9CBD2A0028EA89E293",
+    "name": "NW.04 Auslieferungsliste Neuwagen",
+    "description": null,
+    "modified": "2022-04-11T16:41:30.131Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "iBF383A587E7041CE8A879C3F932E6367",
+    "name": "NW.05 Betriebsvergleich Neuwagen",
+    "description": null,
+    "modified": "2022-02-18T13:38:57.056Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "iBBED921DD9884062ADAA83C20EC048C5",
+    "name": "NW.06 Markenvergleich Neuwagen",
+    "description": null,
+    "modified": "2022-02-18T13:40:37.012Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "i8777EFA0C2A84092B5C8B8DE2ACC99E1",
+    "name": "NW.07 Modelllinien Neuwagen",
+    "description": null,
+    "modified": "2022-03-10T10:49:46.516Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "iE9875976F0A7495FB6127334A4AD59C2",
+    "name": "NW.08 Bestands\u00fcbersicht Neuwagen",
+    "description": null,
+    "modified": "2024-05-17T13:05:23.787Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "i369ACBE88750439CBF7D7D5A171DE830",
+    "name": "NW.09 Bestand NW nach Standtagen",
+    "description": null,
+    "modified": "2024-05-21T14:54:41.806Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "iB2242CB4FFAB416F953EED996315A6C4",
+    "name": "NW.10 Bestand VFW nach Standtagen",
+    "description": null,
+    "modified": "2024-05-21T14:45:29.024Z",
+    "path": "Team Content/Verkauf/2. Neuwagen",
+    "type": "report"
+  },
+  {
+    "id": "i290B0A1B06CC4D4D987C49B6598AA9ED",
+    "name": "GW.01 Gesch\u00e4ftsmetrik Gebrauchtwagen",
+    "description": null,
+    "modified": "2022-02-18T13:45:44.323Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "iF1440537A4EC4AFDBF9950E0297811F7",
+    "name": "GW.02 Verk\u00e4uferbericht Gebrauchtwagen",
+    "description": null,
+    "modified": "2022-02-18T13:49:51.177Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "i0562B5D6B9CD470B90B005FE5E902179",
+    "name": "GW.03 Ranking Verk\u00e4ufer Gebrauchtwagen",
+    "description": null,
+    "modified": "2022-07-20T12:19:49.845Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "i068B1BC90EB84E06B52D0C33AB99BBC0",
+    "name": "GW.04 Auslieferungsliste Gebrauchtwagen",
+    "description": null,
+    "modified": "2022-04-11T16:42:28.600Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "i90C8F60FD6F74547A79F8E161E7C3DB8",
+    "name": "GW.05 Betriebsvergleich Gebrauchtwagen",
+    "description": null,
+    "modified": "2022-02-18T15:33:23.473Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "iCF18460ED47141F4A61B50A570DEDC8C",
+    "name": "GW.06 Markenvergleich Gebrauchtwagen",
+    "description": null,
+    "modified": "2022-02-18T15:34:23.295Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "i11D3E2A9541F4E01A93BC3151C16AD29",
+    "name": "GW.07 Verkaufsbericht GW nach Eink\u00e4ufern",
+    "description": null,
+    "modified": "2022-02-18T15:36:54.344Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "iD0DDD483081845CBB505099A9075AE72",
+    "name": "GW.08 Bestands\u00fcbersicht Gebrauchtwagen",
+    "description": null,
+    "modified": "2024-05-17T13:16:32.113Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "i9A53A385A7194426A54F679DB5477A4B",
+    "name": "GW.09 Bestand GW nach Standtagen",
+    "description": null,
+    "modified": "2024-05-21T14:41:33.986Z",
+    "path": "Team Content/Verkauf/3. Gebrauchtwagen",
+    "type": "report"
+  },
+  {
+    "id": "i1A5FA2F339C24F9D85FA4300D56A6AA7",
+    "name": "VF.01 Entw. Zeitreihe mit Zeitraum",
+    "description": null,
+    "modified": "2022-07-13T09:15:24.157Z",
+    "path": "Team Content/Verkauf/4. FIBU Verkauf",
+    "type": "report"
+  },
+  {
+    "id": "i0AFEB30E5B2C45C8B3C9381B1186326A",
+    "name": "VF.02 Kostenstellenbericht DB 3",
+    "description": null,
+    "modified": "2022-07-13T09:35:59.531Z",
+    "path": "Team Content/Verkauf/4. FIBU Verkauf",
+    "type": "report"
+  },
+  {
+    "id": "i082692C430344356B97DC8E32B30E67A",
+    "name": "VF.03 BWA VJ-Soll-Ist-Vergleich",
+    "description": null,
+    "modified": "2022-08-03T13:24:40.871Z",
+    "path": "Team Content/Verkauf/4. FIBU Verkauf",
+    "type": "report"
+  },
+  {
+    "id": "iABD9B2A14E8E4AEEACAA9616BCFE0BED",
+    "name": "VF.04 Umsatz bis DB1",
+    "description": null,
+    "modified": "2022-06-29T15:52:09.655Z",
+    "path": "Team Content/Verkauf/4. FIBU Verkauf",
+    "type": "report"
+  },
+  {
+    "id": "iD74B061743A7439FAF5B2C979E33A50C",
+    "name": "Z.01 Entwicklung Kennzahlen Monteure",
+    "description": null,
+    "modified": "2024-04-15T08:15:14.133Z",
+    "path": "Team Content/Zeiterfassung",
+    "type": "report"
+  },
+  {
+    "id": "i53B1057E9B9047758AC68C40236AE6E2",
+    "name": "Z.02 Zeitspiegel \u00dcbersicht",
+    "description": null,
+    "modified": "2024-04-15T08:19:43.679Z",
+    "path": "Team Content/Zeiterfassung",
+    "type": "report"
+  },
+  {
+    "id": "iCE74F30E1D144666BA3C3E6489AD0CA6",
+    "name": "Z.03 Zeitspiegel Monteure",
+    "description": null,
+    "modified": "2024-04-19T09:43:01.303Z",
+    "path": "Team Content/Zeiterfassung",
+    "type": "report"
+  },
+  {
+    "id": "iD3B19EC52C6C4C1BB58AE2089A8733F9",
+    "name": "Z.04 Zeitspiegel Monteure Tagesbericht",
+    "description": null,
+    "modified": "2024-04-15T08:51:34.063Z",
+    "path": "Team Content/Zeiterfassung",
+    "type": "report"
+  },
+  {
+    "id": "iDCB9489A732448BA8C40E31BEDA53AEC",
+    "name": "Z.05 Entwicklung Kennzahlen",
+    "description": null,
+    "modified": "2024-04-15T08:58:04.541Z",
+    "path": "Team Content/Zeiterfassung",
+    "type": "report"
+  },
+  {
+    "id": "i382618798CB44E328AEE485BA4051456",
+    "name": "Z.06 Stempelungen Raucher",
+    "description": null,
+    "modified": "2025-01-30T09:01:12.373Z",
+    "path": "Team Content/Zeiterfassung",
+    "type": "report"
+  },
+  {
+    "id": "iB726B862ECD1463D835A1697EEAD028D",
+    "name": "Z.07 \u00dcbersicht Abw. durch Krankheit",
+    "description": null,
+    "modified": "2024-12-16T09:55:08.467Z",
+    "path": "Team Content/Zeiterfassung",
+    "type": "report"
+  }
+]

二進制
Tasks/scripts/VBS/save-as-mdl.MCX


+ 27 - 0
Tasks/scripts/VBS/save-as-mdl.mac

@@ -0,0 +1,27 @@
+Dim objApp As Object
+Dim objModel As Object
+Dim objCube As Object
+
+Dim filename as String
+Dim folder as String
+Dim publish As String
+
+
+Sub Main ()
+   Rem On Error Resume Next
+
+   folder = "C:\GlobalCube\System\LOCOSOFT\Models"
+   filename = "S_Aftersales"
+   rem publish = "C:\GAPS\Portal\System\Cube_out\temp"
+   
+   folder = GetField(Command, 1, ",")
+   filename = GetField(Command, 2, ",")
+   
+   Set objApp = CreateObject("IBMCognosTransformer.ApplicationCtrl.1")
+   Set objModel = objApp.OpenModel(folder + "\" + filename + ".pyj")
+
+   objModel.SaveAs(folder + "\..\mdl\" + filename + ".mdl")
+   
+   objModel.Close
+   rem objApp.Quit
+End Sub

+ 8 - 0
Tasks/scripts/bcp_in.bat

@@ -0,0 +1,8 @@
+@call "%~dp0config2.bat"
+rem %1 = CSV-Dateiname [ohne Endung]
+rem %2 = SQL-Query
+rem %3 = Datenbank
+
+
+bcp.exe %2 in "%SQL_TEMP:~1,-1%\%~1.csv" -S %DEST_SERVER% -d %3 -U %DEST_USER% -P %DEST_PASSWORD% -c -C 65001 -m 1000 -b 2000 -h TABLOCK -e "%SQL_LOGS:~1,-1%\%~1.in.log" > "%SQL_LOGS:~1,-1%\%~1.bcp2.log" 
+rem type "%SQL_LOGS%\%1.bcp2.log" | findstr -v "1000" 

+ 7 - 0
Tasks/scripts/bcp_queryout.bat

@@ -0,0 +1,7 @@
+@call "%~dp0config2.bat"
+rem %1 = CSV-Dateiname [ohne Endung]
+rem %2 = SQL-Query
+
+bcp.exe %2 queryout "%SQL_TEMP:~1,-1%\%~1.csv" -S %SOURCE_SERVER% -d %SOURCE_DATABASE% -U %SOURCE_USER% -P %SOURCE_PASSWORD% -c -C 65001 -m 1000 -b 2000 -e "%SQL_LOGS:~1,-1%\%~1.queryout.log" > "%SQL_LOGS:~1,-1%\%~1.bcp1.log" 
+rem echo %2
+rem type "%SQL_LOGS%\%1.bcp2.log" | findstr -v "1000" 

+ 5 - 0
Tasks/scripts/config2.bat

@@ -0,0 +1,5 @@
+@echo off
+cd /d "%~dp0"
+if not [%DEST_DATABASE%]==[] goto :eof
+
+for /F "delims=" %%i in (..\DB.ini) do set %%i>nul

+ 1 - 1
Tasks/scripts/db_create.bat

@@ -1,3 +1,3 @@
 @call "%~dp0config.bat" 0 > nul
 
-..\python\python.exe db_create.py %PORTAL%\System\%SYSTEM:~1,-1%\SQL\config\%~n1.json
+gctools.exe db create "%~1"

+ 0 - 191
Tasks/scripts/db_create.py

@@ -1,191 +0,0 @@
-import json
-from collections import namedtuple
-from pathlib import Path
-
-import pandas as pd
-import plac
-import pyodbc
-
-DbCreateConfig = namedtuple('DbCreateConfig', 'name csv_file clients filter source_dsn target_dsn stage_dir batch_dir')
-DsnConfig = namedtuple('DsnConfig', 'user password server database driver schema')
-
-cfg = DbCreateConfig(**{
-    'name': 'CARLO',
-    'csv_file': 'CARLO.csv',
-    'clients': {'1': 'M und S Fahrzeughandel GmbH'},
-    'filter': ['01.01.2018', '01.01.2019'],
-    'source_dsn': {'user': 'sa', 'password': 'Mffu3011#', 'server': 'GC-SERVER1\\GLOBALCUBE',
-                   'database': 'DE0017', 'driver': 'mssql', 'schema': 'dbo'},
-    'target_dsn': {'user': 'sa', 'password': 'Mffu3011#', 'server': 'GC-SERVER1\\GLOBALCUBE',
-                   'database': 'CARLO2', 'driver': 'mssql', 'schema': 'import'},
-    'stage_dir': '..\\temp',
-    'batch_dir': '..\\batch'
-})
-
-
-class database_inspect():
-    tables = []
-
-    def __init__(self, dsn):
-        self.dsn = DsnConfig(**dsn)
-        self.cursor = self.connect()
-
-    def conn_string(self):
-        if self.dsn.driver == 'mssql':
-            return 'Driver={SQL Server Native Client 11.0};' + \
-                   f"Server={self.dsn.server};Database={self.dsn.database};Uid={self.dsn.user};Pwd={self.dsn.password}"
-        if self.dsn.driver == 'mysql':
-            return f"mysql+pymysql://{self.dsn.user}:{self.dsn.password}@{self.dsn.server}/{self.dsn.database}?charset=utf8mb4"
-        return f"DSN={self.dsn.server};UID={self.dsn.user};PWD={self.dsn.password}"
-
-    def bcp_conn_params(self):
-        return f"-S {self.dsn.server} -d {self.dsn.database} -U {self.dsn.user} -P {self.dsn.password}"
-
-    def connect(self):
-        c = pyodbc.connect(self.conn_string())
-        return c.cursor()
-
-    def get_tables(self):
-        tables = [x[2] for x in self.cursor.tables(tableType='TABLE')]
-        views = [x[2] for x in self.cursor.tables(tableType='VIEW')]
-        self.tables = tables + views
-        return self.tables
-
-    def get_prefix(self):
-        if (len(self.tables)) == 0:
-            self.get_tables()
-        source_tables_prefix = dict(enumerate(sorted(list(set([t.split('$')[0] for t in self.tables if '$' in t]))), 1))
-        if len(source_tables_prefix) == 0:
-            q = self.cursor.execute('select name FROM sys.databases')
-            source_tables_prefix = [x[0] for x in q.fetchall()]
-        return source_tables_prefix
-
-    def get_columns(self, table):
-        source_insp_cols = [col.column_name for col in self.cursor.columns(table=table)]
-        if len(source_insp_cols) == 0:
-            q = self.cursor.execute('SELECT COLUMN_NAME as column_name FROM information_schema.columns ' +
-                                    f"WHERE TABLE_NAME = '{self.convert_table(table)}'")
-            source_insp_cols = [col[0] for col in q.fetchall()]
-        return source_insp_cols
-
-    def convert_table(self, table):
-        if '.' in table:
-            table = table.split('.')[-1]
-        if '[' in table:
-            table = table[1:-1]
-        return table
-
-
-@plac.pos('config_file', '', type=str)
-def create(config_file='dbtools/OPTIMA.json'):
-    cfg_import = json.load(open(config_file, 'r', encoding='latin-1'))
-    base_dir = Path(config_file).resolve().parent
-    cfg_import['name'] = Path(config_file).stem
-    if cfg_import['stage_dir'][:2] == '..':
-        cfg_import['stage_dir'] = str(base_dir.joinpath(cfg_import['stage_dir']).resolve())
-    if cfg_import['batch_dir'][:2] == '..':
-        cfg_import['batch_dir'] = str(base_dir.joinpath(cfg_import['batch_dir']).resolve())
-    cfg = DbCreateConfig(**cfg_import)
-
-    df = pd.read_csv(f"{base_dir}/{cfg.csv_file}", sep=';', encoding='latin-1')
-    config = df[df['target'].notnull()]
-    print(config.head())
-
-    source_db = database_inspect(cfg.source_dsn)
-    source_tables = source_db.get_tables()
-    print(source_db.get_prefix())
-
-    target_db = database_inspect(cfg.target_dsn)
-    target_tables = target_db.get_tables()
-
-    for index, current_table in config.iterrows():
-        with open(f"{cfg.batch_dir}/{current_table['target']}.bat", 'w', encoding='cp850') as f:
-            f.write('@echo off \n')
-            f.write('rem ==' + current_table['target'] + '==\n')
-
-            if not current_table['target'] in target_tables:
-                f.write(f"echo Ziel-Tabelle '{current_table['target']}' existiert nicht!\n")
-                print(f"Ziel-Tabelle '{current_table['target']}' existiert nicht!")
-                continue
-
-            f.write(f"del {cfg.stage_dir}\\{current_table['target']}*.* /Q /F >nul 2>nul \n")
-            f.write(f"sqlcmd.exe {target_db.bcp_conn_params()} -p " +
-                    f"-Q \"TRUNCATE TABLE [{cfg.target_dsn['schema']}].[{current_table['target']}]\" \n")
-
-            target_columns_list = target_db.get_columns(current_table['target'])
-            if 'CLIENT_DB' in target_columns_list:
-                target_columns_list.remove('CLIENT_DB')
-                target_columns_list.append('Client_DB')
-            target_columns = set(target_columns_list)
-
-            for client_db, prefix in cfg.clients.items():
-                source_table = current_table['source'].format(prefix)
-                if source_table not in source_tables:
-                    source_table2 = source_db.convert_table(source_table)
-                    if source_table2 not in source_tables:
-                        f.write(f"echo Quell-Tabelle '{source_table}' existiert nicht!\n")
-                        print(f"Quell-Tabelle '{source_table}' existiert nicht!")
-                        continue
-
-                source_columns = set(source_db.get_columns(source_table))
-
-                intersect = source_columns.intersection(target_columns)
-                # print("Auf beiden Seiten: " + ";".join(intersect))
-                diff1 = source_columns.difference(target_columns)
-                if len(diff1) > 0:
-                    f.write("rem Nur in Quelle: " + ";".join(diff1) + "\n")
-                diff2 = target_columns.difference(source_columns)
-                if 'Client_DB' not in diff2:
-                    f.write("echo Spalte 'Client_DB' fehlt!\n")
-                    print(f"Ziel-Tabelle '{current_table['target']}' Spalte 'Client_DB' fehlt!")
-                    continue
-                diff2.remove('Client_DB')
-                if len(diff2) > 0:
-                    f.write("rem Nur in Ziel:   " + ";".join(diff2) + "\n")
-
-                if not pd.isnull(current_table['query']):
-                    select_query = current_table['query'].format(prefix, cfg.filter[0], cfg.filter[1])
-                elif '.' in source_table or cfg.source_dsn['schema'] == '':
-                    select_query = f"SELECT T1.* FROM \\\"{source_table}\\\" T1 "
-                else:
-                    select_query = f"SELECT T1.* FROM [{cfg.source_dsn['schema']}].[{source_table}] T1 "
-
-                if not pd.isnull(current_table['filter']):
-                    select_query += " WHERE " + current_table['filter'].format("", cfg.filter[0], cfg.filter[1])
-                # select_columns = "T1.[" + "], T1.[".join(intersect) + "],"
-                select_columns = ''
-                for col in target_columns_list:
-                    if col in intersect:
-                        select_columns += f"T1.[{col}], "
-                    elif col == 'Client_DB':
-                        select_columns += "'" + client_db + "' as \\\"Client_DB\\\", "
-                    else:
-                        select_columns += "'' as \\\"" + col + "\\\", "
-
-                select_query = select_query.replace("T1.*", select_columns[:-2])
-                select_query = select_query.replace("%", "%%")     # batch-Problem
-
-                stage_csv = f"{cfg.stage_dir}\\{current_table['target']}_{client_db}.csv"
-                # insert_query = f"LOAD DATA INFILE '{stage_csv}' INTO TABLE {current_table['target']} FIELDS TERMINATED BY ','
-                # ENCLOSED BY '\"' LINES TERMINATED BY '\n';"
-
-                # print(select_query)
-                bulk_copy = 'bcp' if cfg.source_dsn['driver'] == 'mssql' else 'cet'
-                f.write(f"{bulk_copy} \"{select_query}\" queryout \"{stage_csv}\" {source_db.bcp_conn_params()} -c -C 65001 -m 1000 " +
-                        f"-e \"{stage_csv[:-4]}.queryout.log\" > \"{stage_csv[:-4]}.bcp1.log\" \n")
-                f.write(f"type \"{stage_csv[:-4]}.bcp1.log\" | findstr -v \"1000\" \n")
-                f.write(f"bcp \"[{cfg.target_dsn['schema']}].[{current_table['target']}]\" in \"{stage_csv}\" {target_db.bcp_conn_params()} " +
-                        f"-c -C 65001 -m 1000 -e \"{stage_csv[:-4]}.in.log\" > \"{stage_csv[:-4]}.bcp2.log\" \n")
-                f.write(f"type \"{stage_csv[:-4]}.bcp2.log\" | findstr -v \"1000\" \n")
-
-    with open(f"{cfg.batch_dir}/_{cfg.name}.bat", 'w', encoding='cp850') as f:
-        f.write("@echo off & cd /d %~dp0 \n")
-        f.write(f"del {cfg.stage_dir}\\*.* /Q /F >nul 2>nul \n\n")
-        for index, current_table in config.iterrows():
-            f.write(f"echo =={current_table['target']}==\n")
-            f.write(f"echo {current_table['target']} >CON \n")
-            f.write(f"call \"{current_table['target']}.bat\"\n\n")
-
-
-if __name__ == '__main__':
-    plac.call(create)

+ 1 - 1
Tasks/scripts/db_run.bat

@@ -1,3 +1,3 @@
 @call "%~dp0config.bat" 0 > nul
 
-..\python\python.exe db_run.py %1
+gctools.exe db run "%~1" --increment=0

+ 0 - 19
Tasks/scripts/db_run.py

@@ -1,19 +0,0 @@
-from concurrent.futures import ThreadPoolExecutor
-from pathlib import Path
-import subprocess
-
-
-def task(name):
-    print(Path(name).name)
-    return subprocess.Popen(f'C:\\Windows\\System32\\cmd.exe /C "{name}"', stdout=subprocess.DEVNULL).wait()
-
-
-def main(base_dir):
-    files = [str(f) for f in Path(base_dir).glob('*.bat') if not f.name.startswith('_')]
-
-    with ThreadPoolExecutor(max_workers=5) as executor:
-        executor.map(task, files)
-
-
-if __name__ == '__main__':
-    main('C:\\GlobalCube\\System\\ARI\\SQL\\batch')

+ 1 - 0
Tasks/scripts/delete.bat

@@ -0,0 +1 @@
+del "%~1" /F >nul 2>nul

二進制
Tasks/scripts/gctools.exe


+ 5 - 0
Tasks/scripts/sql_query.bat

@@ -0,0 +1,5 @@
+@call "%~dp0config2.bat"
+rem %1 = SQL-Query
+
+@echo off
+sqlcmd.exe -S %DEST_SERVER% -d %DEST_DATABASE% -U %DEST_USER% -P %DEST_PASSWORD% -Q %1 -p

+ 8 - 0
Tasks/scripts/sql_timestamp.bat

@@ -0,0 +1,8 @@
+@call "%~dp0config2.bat"
+rem %1 = CSV-Datei
+rem %2 = Tabelle
+rem %3 = Client_DB
+
+call sql_query.bat "SELECT isnull(max([timestamp]), 0) as TS FROM %~2 WHERE [Client_DB] = '%~3'" | findstr "0x0" > "%SQL_LOGS:~1,-1%\%~1.ts.log"
+(set /p TS=)<"%SQL_LOGS:~1,-1%\%~1.ts.log"
+echo '%TS%'

+ 7 - 0
Tasks/scripts/sqlexec2.bat

@@ -0,0 +1,7 @@
+@call "%~dp0config.bat" 0 > nul
+
+sqlcmd.exe -S localhost\GLOBALCUBE -d %SYSTEM% -U sa -P Mffu3011# -b -i %~1 -o ..\logs\%~n1.sql.log
+
+if %errorlevel% neq 0 (
+  type ..\logs\%~n1.sql.log
+)

+ 5 - 4
Tasks/scripts/transformer11.bat

@@ -4,12 +4,13 @@ call teste_verzeichnis.bat %COGNOS11% & if errorlevel 42 goto :eof
 
 echo == Modell "%~n1" ==
 
-copy /Y %PORTAL%\System\%SYSTEM:~1,-1%\Models\%~n1.pyj  %PORTAL%\System\%SYSTEM:~1,-1%\Models\gefuellt\%~n1.pyj
+copy /Y "%SYSTEM_DIR:~1,-1%\Models\%~n1.pyj"  "%SYSTEM_DIR:~1,-1%\Models\gefuellt\%~n1.pyj"
+%COGNOS%\runmac32.exe "VBS\save-as-mdl.mac" "%SYSTEM_DIR:~1,-1%\Models\gefuellt","%~n1"
+gctools.exe c7 mdl-convert "%SYSTEM_DIR:~1,-1%\Models\mdl\%~n1.mdl"
 
+%COGNOS11%\cogtr.exe -n2 -c -g -p"%SYSTEM_DIR:~1,-1%\Models\gefuellt\%~n1.pyj" 
 
-%COGNOS11%\cogtr.exe -n2 -c -g -p%PORTAL:~0,-1%\System\%SYSTEM:~1,-1%\Models\gefuellt\%~n1.pyj" 
-
-copy /Y %PORTAL%\System\%SYSTEM:~1,-1%\Logs\%~n1.log %TASKS%\logs
+copy /Y "%SYSTEM_DIR:~1,-1%\Logs\%~n1.log" %TASKS%\logs
 
 :end
 echo Fertiggestellt:    %TIME:~0,5%