2026-04-03 00:49:35 +02:00
2026-04-02 13:15:03 +02:00
2026-04-03 00:49:35 +02:00
2026-04-02 13:15:03 +02:00
2026-04-02 13:15:03 +02:00
2026-04-02 13:15:03 +02:00
2026-04-02 13:15:03 +02:00
2026-04-03 00:49:35 +02:00

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
No description provided
Readme 493 KiB
Languages
Python 100%