opencode-session: ses_19d153875ffe1FRkiODSAHE8t4 opencode-model: deepseek-v4-pro opencode-agent: build opencode-cost: 0.14581635 opencode-created: 2026-05-26 09:13:34
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:
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?
"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?
Maht ja ulatus — kui palju job-faile on vaja üle viia? Kas me räägime kümnest, sajast või tuhandest failist?
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)?
Skeemide vastendus — kas on olemas Oracle -> PostgreSQL tabelite ja skeemide vastendustabel? Kas tabelinimed jäävad samaks või muutuvad?
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.
Fail: export_HK.atl — SAP Data Services (BODS) ekspordifail, 1928 rida, versioon 14.4.
| 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 | 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 |
export_HK.atlFail 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.
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> |
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 |
Genereerin uue faili export_HK_pg.atl originaali kõrvale.
Enne kui alustan, vajan PostgreSQL ühenduste andmeid iga 5 Oracle baasi kohta:
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?
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, PRIAARHIIVTEST, 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 skeemLoodud 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.