2026-04-07 01:57:16 +00:00
2026-04-07 03:56:43 +02:00
2026-04-07 03:53:41 +02:00
2026-04-04 20:45:35 +02:00
2026-04-02 13:15:03 +02:00
2026-04-04 00:57:17 +02:00
2026-04-06 14:22:26 +02:00
2026-04-03 01:04:29 +02:00
2026-04-02 13:15:03 +02:00
2026-04-04 00:57:17 +02:00
2026-04-04 20:45:35 +02:00
2026-04-07 03:56:43 +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

uudpak_semistruktur/
├── udpak_semistruktur/             # Python-pakken
│   ├── extract/                    # Filindlæsning og JSON/XML-traversering
│   │   ├── reader.py               # Filindlæsning, type- og encoding-detektion
│   │   ├── traversal.py            # Rekursiv stibaseret navigation i JSON/XML
│   │   └── extractor.py            # Udtræk af rækker baseret på YAML-konfiguration
│   ├── transform/                  # Datatransformation
│   │   ├── convert.py              # Typekonvertering (dato, tal, boolean m.m.)
│   │   ├── clean.py                # Rensning, linjeskift, tag-stripping, case, filnavn
│   │   ├── reshape.py              # Flatten, join, where-filter, id-felt, sammensat nøgle
│   │   └── hash.py                 # Hash-beregning af kolonneværdier
│   ├── load/                       # Skrivning til fil og database
│   │   ├── file_writer.py          # CSV/TSV-skrivning med retry ved låste filer
│   │   └── db_writer.py            # Sybase ASE insert via ODBC
│   ├── config.py                   # YAML-indlæsning, validering og expansion
│   ├── db.py                       # Credentials fra pwd.json
│   ├── ddl.py                      # DDL-generering og flyt-scripts til Sybase ASE
│   ├── logger.py                   # Central logging med konfigurerbart logniveau
│   └── 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
python udpak_semistruktur.py --config min_config.yaml --DDL
python udpak_semistruktur.py --config min_config.yaml --DDL --tmp
python udpak_semistruktur.py --config min_config.yaml --DDL --flyt
python udpak_semistruktur.py --config min_config.yaml --DDL --flyt_kort

Vigtigste flag

Flag Beskrivelse
--config Sti til YAML-konfigurationsfil
--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%