--- opencode-session: ses_19d153875ffe1FRkiODSAHE8t4 opencode-model: deepseek-v4-pro opencode-agent: build opencode-cost: 0.14581635 opencode-created: 2026-05-26 09:13:34 opencode-updated: 2026-05-26 10:07:18 --- # SAP BI2025 DSD Oracle->PostgreSQL üleviimisplaan ## User Koosta üldplaan SAP BI2025 DSD andmelaadimiste osa üleviimiseks oracle andmebaasidelt postgre andmebaasidele. Muutmisele lähevad DSD-st eksporditud `job` ETL fail. Muudame ainult lõpptabeleid `oracle -> postgre` ja ka neid vajetabeleid mis asuvad `job` sees. Palun koosta meie tegevuse jaoks üldplaan. Kui jäi midagi arusaamatuks, siis küsi enne kui hakkame `build` režiimis konkreetseid tegevusi tegema. Kuna testimine toimub teises arvutis, siis püüame jagada meie plaani loogilisteks osadeks. Palun tee selle projekti jaoks eraldi kaust `SAP` kataloogi ~/Dropbox/Project alla. Tööruumis on praegu kaustad `.venv/`, `.vscode/` ja `liiklussagedus/`. Enne kui koostan põhjaliku üldplaani, vajan täpsustusi: 1. **DSD `job` failide formaat** — mis faililaiendiga on eksporditud job-failid? Kas need on XML-põhised (SAP Data Services/BODS), JSON, või midagi muud? Kas on võimalik näha ühte näidisfaili, et mõista struktuuri? 2. **"Vajetabeleid"** — kas need on nn *value tables* ehk väikesed viitetabelid/lookup tabelid, mis asuvad otse job-faili sees, või on need eraldi konfiguratsioonifailid? Mis nende täpne roll on ETL protsessis? 3. **Maht ja ulatus** — kui palju job-faile on vaja üle viia? Kas me räägime kümnest, sajast või tuhandest failist? 4. **SQL muudatused** — kas lisaks tabelinimede vahetusele (`oracle_schema -> postgre_schema`) on vaja muuta ka Oracle-spetsiifilist SQL süntaksit (nt `JOIN` süntaks, `TRUNC`, kuupäevafunktsioonid, PL/SQL jms)? 5. **Skeemide vastendus** — kas on olemas Oracle -> PostgreSQL tabelite ja skeemide vastendustabel? Kas tabelinimed jäävad samaks või muutuvad? 6. **Testimiskeskkond** — kuidas toimub testimine teises arvutis? Kas on olemas Git repositoorium, kuhu muudatused üles laadida? Kuidas testarvuti neid faile kätte saab? Palun vasta nendele küsimustele, siis koostan konkreetse samm-sammult plaani. Kausta `SAP` loomise ja failide muutmisega alustame siis, kui oleme `build` režiimis. ## Faili struktuuri analüüs **Fail:** `export_HK.atl` — SAP Data Services (BODS) ekspordifail, 1928 rida, versioon 14.4. ### Andmebaasid (9 tk) | Nimi | Tüüp | Oracle'i versioon | Muuta? | |------|------|-------------------|--------| | `Andmeladu_PRIA` | Oracle | 19c | **Jah** → PostgreSQL | | `LADU_HK` | Oracle | 12c | **Jah** → PostgreSQL | | `PRIA_ALLIKAD` | Oracle | 19c | **Jah** (allikas, vajetabel) | | `PRIA_ARHIIVTEST` | Oracle | 19c | **Jah** (allikas, vajetabel) | | `VTM` | Oracle | 19c | **Jah** (allikas, vajetabel) | | `MATS_baasmoodul` | ODBC | — | **Ei** | | `MATS_kliendimoodul` | ODBC | — | **Ei** | | `MATS_sisestusmoodul` | ODBC | — | **Ei** | | `MATS_vtm` | ODBC | — | **Ei** | ### Dataflow'd (5 tk) | Dataflow | Loeb allikatest | Laeb sihtkohta | |----------|-----------------|----------------| | `AB_kontr` | MATS_* (ODBC) + PRIA_ALLIKAD + PRIA_ARHIIVTEST + VTM | `Andmeladu_PRIA` | | `HK_objekt` | MATS_* (ODBC) | `LADU_HK` | | `HK_objekti_hind` | MATS_* (ODBC) | `LADU_HK` | | `HK_objekti_kontaktid` | MATS_* (ODBC) | `LADU_HK` | | `HK_obj_hinna_valideerimine` | MATS_* (ODBC) | `LADU_HK` | --- ## Ülevaade failist `export_HK.atl` Fail sisaldab **9 andmebaasi**, **5 dataflow'd**, **2 plaani (plan)** ja **1 sessiooni (job)**. Oracle viiteid on kahes kohas: | Oracle komponent | Asukoht | Mida muuta | |-----------------|---------|------------| | 5 `CREATE DATABASE DATASTORE` | read 5–404 | `database_type=Oracle` → `PostgreSQL` | | 5 `LOAD TABLE` LDRConfiguration | dataflow'de sees | `database_type="Oracle"` → `PostgreSQL` | **ODBC baasid (MATS_*) jäävad puutumata.** READ TABLE viited Oracle baasidest (PRIA_ALLIKAD, PRIA_ARHIIVTEST, VTM) kasutavad lihtsalt datastore nime, mis jääb samaks. --- ## Muudatuste detailplaan ### 1. Osa — Datastore definitsioonid (5 tk) Iga Oracle datastore konverteerimine PostgreSQL native vastu: | Enne | Pärast | |------|--------| | `Oracle` | `PostgreSQL` | | `` / `` | **Eemaldada** | | `PRIA_DWH` | `???` | | `Oracle 19c` | `???` | ### 2. Osa — LOAD TABLE laadurite seadistused (5 tk) Iga `ldr_configurations` XML-is: | Enne | Pärast | |------|--------| | `database_type="Oracle"` | `database_type="PostgreSQL"` | | `database_version="Oracle 19c"` | `database_version="PostgreSQL 16"` | | Kõik `` elemendid | **Eemaldada** | ### 3. Osa — Väljund Genereerin uue faili `export_HK_pg.atl` originaali kõrvale. --- Enne kui alustan, vajan PostgreSQL ühenduste andmeid iga 5 Oracle baasi kohta: 1. **Andmeladu_PRIA** → PostgreSQL host / port / db nimi / kasutaja / versioon? 2. **LADU_HK** → PostgreSQL host / port / db nimi / kasutaja / versioon? 3. **PRIA_ALLIKAD** → PostgreSQL host / port / db nimi / kasutaja / versioon? 4. **PRIA_ARHIIVTEST** → PostgreSQL host / port / db nimi / kasutaja / versioon? 5. **VTM** → PostgreSQL host / port / db nimi / kasutaja / versioon? Kui täpsed ühendusandmed pole veel teada, võin panna **placeholder** väärtused (nt `PG_HOST_Andmeladu_PRIA`), mida saate hiljem asendada. Kumb variant sobib? ## Tulemus **`export_HK_pg.atl`** — uus fail, ainult LADU_HK sihtbaas konverteeritud: | Muudatus | Mida muudeti | |----------|-------------| | **LADU_HK datastore** | `database_type=Oracle` → `PostgreSQL`; eemaldatud `Oracle_default_*`; lisatud `postgresql_host/port/database/version` placeholderitega | | **4 LOAD TABLE laadurit** | `LDRConfiguration database_type="Oracle"` → `PostgreSQL`; eemaldatud kõik `oracle_*` elemendid | | **Andmeladu_PRIA** | **Ei muudetud** — jäi Oracle peale | | **Lähtebaasid** (PRIA_ALLIKAD, PRIA_ARHIIVTEST, VTM, MATS_*) | **Ei muudetud** | **Placeholder väärtused** (LADU_HK jaoks): ``` PG_HOST_LADU_HK 5432 PG_DB_LADU_HK PostgreSQL 16 ``` ## `export_HK_pg.atl` — muudatused | Element | Enne | Pärast | |---------|------|--------| | Job nimi | `MATS_hinnakataloog` | `MATS_hinnakataloog_PG` | | LADU_HK datastore | Oracle | PostgreSQL (placeholderitega) | | 4 LADU_HK laadurit | Oracle LDRConfiguration | PostgreSQL LDRConfiguration | | Andmeladu_PRIA + lähtebaasid | Oracle | Puutumata | ## `ladu_hk_ddl.sql` — PostgreSQL skeem Loodud **4 tabelit** skeemis `LADU_HK`: | Tabel | Indekseid | Trigger | |-------|-----------|---------| | `HK_OBJEKT` | 4 (ID, klient_id, esindaja_id, unikaalne_kood) | `muutmis_aeg` BEFORE UPDATE | | `HK_OBJEKTI_HIND` | 3 (ID, objekti_id, kehtivus) | `muutmis_aeg` BEFORE UPDATE | | `HK_OBJEKTI_KONTAKT` | 1 (objekti_id) | — (pole muutmis_aeg veergu) | | `HK_OBJ_HINNA_VALIDEERIMINE` | 2 (hinna_id, staatus) | `muutmis_aeg` BEFORE UPDATE | Andmetüübid on teisendatud: `DECIMAL(19,0)` → `BIGINT`, `DECIMAL(p,s)` → `NUMERIC(p,s)`, `DATETIME(n)` → `TIMESTAMP(n)`. SQL fail sisaldab ka kommentaare ja õiguste näidist.