---
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 |
|------|--------|
| `<database_type>Oracle</database_type>` | `<database_type>PostgreSQL</database_type>` |
| `<Oracle_default_number_precision>` / `<Oracle_default_number_scale>` | **Eemaldada** |
| `<oracle_host_string>PRIA_DWH</oracle_host_string>` | `<postgresql_host>???</postgresql_host>` |
| `<oracle_version>Oracle 19c</oracle_version>` | `<postgresql_version>???</postgresql_version>` |

### 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 `<oracle_*>` 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):
```
<postgresql_host>PG_HOST_LADU_HK</postgresql_host>
<postgresql_port>5432</postgresql_port>
<postgresql_database>PG_DB_LADU_HK</postgresql_database>
<postgresql_version>PostgreSQL 16</postgresql_version>
```


## `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.

