#AI_agent Nüüd olen faili konverteerinud. Siin on kokkuvõte tehtud teisendustest: ## Tehtud muudatused failis `export_hinnakataloog_to_postgres_pg.atl` ### Andmebaasi konfiguratsioonid (DATABASE DATASTORE) - **database_type**: `Oracle` → `PostgreSQL` (kõigis PostgreSQL andmebaasides) - **oracle_host_string** → **postgres_host_string** (kõigis PostgreSQL andmebaasides) - **oracle_version** → **postgresql_version** (väärtusega `PostgreSQL 15`) - **database_version** LDR konfiguratsioonides: muudetud `Oracle Database 12c` → `PostgreSQL 15` ### Andmetüübid - `NUMBER` / `DECIMAL` → `NUMERIC` - `VARCHAR2` → `VARCHAR` - `CLOB` → `TEXT` - `BLOB` → `BYTEA` - `INTEGER` → `INT` - `RAW` → `BYTEA` (kui esines) - `FLOAT` / `DOUBLE PRECISION` jäid samaks (PostgreSQL toetab) ### SQL funktsioonid - `sysdate()` → `current_timestamp` - `cast(x, 'type')` → `cast(x as type)` (Oracle süntaks → SQL standard) - `NVL()` → `COALESCE()` (kui esines) ### Muud parandused - `name = 'Oracle ...'` → `name = 'PostgreSQL ...'` (LDR konfiguratsioonides) - Eemaldatud duplikaat `` element LDR konfiguratsioonist - `USER` → `CURRENT_USER` (kus kasutatud päringutes) ### Märkused - `TIMESTAMP2`, `TIMESTAMP6`, `TIMESTAMP9` andmetüübid jäid samaks (SAP DSD spetsiifilised, töötavad PostgreSQL-iga) - Tekstiväljadel nagu `'PRIA oracle baas'` on tegemist lihtsalt siltidega, mis jäeti alles (need ei viita andmebaasi tüübile) - ODBC andmebaase (MATS_baasmoodul, MATS_kliendimoodul, MATS_sisestusmoodul, MATS_vtm) ei muudetud, kuna need on ODBC ühendused Fail on nüüd valmis PostgreSQL-is kasutamiseks. --- Loodud on PostgreSQL tabelite loomise SQL skript faili `hinnakataloog_postgresql_tables.sql`. Siin on selgitused, kuidas Oracle tabelid õigesti PostgreSQL-i teisendada: ## Oracle → PostgreSQL tüüpide teisendustabel | Oracle tüüp | PostgreSQL tüüp | |---|---| | `NUMBER(p,s)` | `NUMERIC(p,s)` | | `NUMBER` (ilma täpsuseta) | `NUMERIC` | | `VARCHAR2(n)` | `VARCHAR(n)` | | `VARCHAR2(4000)` | `VARCHAR(4000)` või `TEXT` | | `CLOB` | `TEXT` | | `BLOB` | `BYTEA` | | `RAW` | `BYTEA` | | `INTEGER` | `INT` | | `FLOAT` / `DOUBLE PRECISION` | `FLOAT` / `DOUBLE PRECISION` (samasugune) | | `DATE` | `DATE` või `TIMESTAMP(0)` | | `TIMESTAMP(p)` | `TIMESTAMP(p)` (samasugune) | ## Tabelite struktuur SQL skript sisaldab **8 tabelit** 5-st eri andmebaasist (skeemist): 1. **LADU.ADMIN_AB_KONTROLL** - Administratiivne andmebaaside kontroll 2. **VTM.AIT_DATA** - Andmete talletamise põhitabel (JSON-like atribuudid) 3. **ISIK.ASULAD** - Asulate loend 4. **LADU_HK.HK_OBJEKT** - Hinnakataloogi objektid 5. **LADU_HK.HK_OBJEKTI_HIND** - Objekti hinnad 6. **LADU_HK.HK_OBJEKTI_KONTAKT** - Objekti kontaktid 7. **LADU_HK.HK_OBJ_HINNA_VALIDEERIMINE** - Hinna valideerimine 8. **ARH_LOTA.T_TAOTLUS** - Taotlused (PRIA arhiiv) ## Olulised märkused 1. **SAP DSD spetsiifilised tüübid**: `TIMESTAMP0`, `TIMESTAMP2`, `TIMESTAMP6`, `TIMESTAMP9` on SAP DSD spetsiifilised, mis PostgreSQL-is töötavad tavaliste `TIMESTAMP(p)` tüüpidena. 2. **Primaarvõtmed ja indeksid**: SQL skript sisaldab kõik indeksid, mis on defineeritud ATL failis. 3. **Skeemid**: Oracle skeemid (nt `LADU`, `VTM`, `ISIK`, `LADU_HK`, `ARH_LOTA`) luuakse PostgreSQL skeemidena. 4. **COMMENT** laused: PostgreSQL toetab `COMMENT ON TABLE/COLUMN` - need säilitavad ATL failis olevad kirjeldused. 5. **Märkus T_TAOTLUSE kohta**: Sellel tabelil on mitu PRIMARY CREATE_INDEX, mis ATL failis on märgitud "PRIMARY" - need on unikaalsed indeksid, mitte päris primaarvõtmed. Tabelil pole formaalset PRIMARY KEY piirangut (TAOTLUS_ID võiks olla primaarvõti).