60fb674c8d7b1f1c4e07a9971a0685357bb8f5fa
udpak_semistruktur
ETL-værktøj til udtræk og transformation af semistrukturerede data (JSON og XML) til flade filer og Sybase ASE-tabeller.
Funktionalitet
- Læser JSON- og XML-filer med automatisk encoding-detektion
- Konfigurationsstyret udtræk via YAML
- Datatransformation: typekonvertering, datohåndtering, rensning, tag-stripping m.m.
- Output til flad fil (CSV/TSV) og/eller Sybase ASE via ODBC
- DDL-generering (CREATE TABLE) til Sybase ASE
- Generering af flyt-scripts (DELETE + INSERT) til tmp → base tabelflytning
- Kompileres til Windows-eksekverbar via PyInstaller
Projektstruktur
udpak_semistruktur/
├── udpak_semistruktur/ # Python-pakken
│ ├── extract/ # Filindlæsning og JSON/XML-traversering
│ │ ├── reader.py # Filindlæsning, type- og encoding-detektion
│ │ └── traversal.py # Rekursiv stibaseret udtræk
│ ├── transform/ # Datatransformation
│ │ ├── convert.py # Typekonvertering (dato, tal, boolean m.m.)
│ │ ├── clean.py # Rensning, linjeskift, tag-stripping, case
│ │ └── reshape.py # Flatten, join, where-filter, id-felt
│ ├── load/ # Skrivning til fil og database
│ │ ├── file_writer.py # CSV/TSV-skrivning med retry
│ │ └── db_writer.py # Sybase ASE insert via ODBC
│ ├── config.py # YAML-konfigurationshåndtering og -validering
│ ├── db.py # Databaseforbindelse og credentials
│ ├── ddl.py # DDL-generering og flyt-scripts til Sybase ASE
│ └── utils.py # Fælles hjælpefunktioner
├── tests/ # Unit tests
├── udpak_semistruktur.py # CLI entry point
├── requirements.txt
└── README.md
Krav
- Python (seneste stabile version anbefales)
- Sybase ASE ODBC-driver installeret på målmaskinen (kan ikke bundtes med PyInstaller)
Installation (udvikling)
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
Brug
python udpak_semistruktur.py --config min_config.yaml --input data.json
python udpak_semistruktur.py --config min_config.yaml --input-liste filer.txt
python udpak_semistruktur.py --config min_config.yaml --input data.xml --DDL
python udpak_semistruktur.py --config min_config.yaml --input data.json --DDL --flyt
Vigtigste flag
| Flag | Beskrivelse |
|---|---|
--config |
Sti til YAML-konfigurationsfil |
--input |
Sti til enkelt input-fil (JSON eller XML) |
--input-liste |
Sti til tekstfil med én input-fil per linje |
--DDL |
Generer CREATE TABLE DDL-filer |
--tmp |
Generer også _tmp-tabelvariant ved DDL |
--flyt |
Generer DELETE + INSERT flyt-scripts (fuld kolonteliste) |
--flyt_kort |
Generer DELETE + INSERT flyt-scripts (SELECT *) |
Kompilering med PyInstaller
pip install pyinstaller
pyinstaller --onefile udpak_semistruktur.py
Den kompilerede .exe lægges i dist/. Bemærk at Sybase ODBC-driveren skal være installeret separat på målmaskinen.
Miljøvariabler
Se .env.example for en oversigt over anvendte miljøvariabler.
YAML-konfiguration
Konfigurationen styrer hvilke felter der udtrækkes, hvordan de transformeres og hvor output skrives hen. Se eksempelkonfigurationer i examples/ (oprettes løbende).
Description
Languages
Python
100%