Endelig 1

This commit is contained in:
2026-04-03 01:04:29 +02:00
parent 60fb674c8d
commit 4f27849fd3
3 changed files with 51 additions and 25 deletions

View File

@@ -15,24 +15,27 @@ ETL-værktøj til udtræk og transformation af semistrukturerede data (JSON og X
## 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
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
```
@@ -53,10 +56,11 @@ pip install -r requirements.txt
## Brug
```bash
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
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
@@ -64,8 +68,6 @@ python udpak_semistruktur.py --config min_config.yaml --input data.json --DDL --
| 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) |