Un script Python pentru convertirea fișierelor XML oferite de S.C. Informatica Feroviară S.A. într-o bază de date SQLite.
- se plasează fișierele
.xml
în folderuldatafiles
- se completează fișierul
datafiles/mapping.json
cu numele companiilor - se rulează
convert.py
:
# Unix
./convert.py
# Windows
python convert.py
Scriptul este scris pentru Python 3.
Deși rularea scriptului durează în jur de 3 secunde (setul de date 2020-2021), se afișează o bară de progres dacă este instalat tqdm
:
# Unix
pip3 install tqdm
# Windows
pip install tqdm
Schema este validă pentru versiunea 2.
Coloanele fără tip de date sunt luate direct din XML (deci cel mai probabil tip text).
Coloană | Tip de date | Descriere |
---|---|---|
Versiune | int | Versiunea bazei de date (schema aceasta descrie versiunea 2) |
Coloană | Tip de date | Descriere |
---|---|---|
Id | int pk | |
NumeLegal | text | Numele oficial al companiei (ex: S.C. Companie S.R.L) |
NumeComun | text | Numele după care este cunoscută compania (în general numele oficial fără prefix sau sufix; ex: Companie) |
Coloană | Tip de date | Descriere |
---|---|---|
Number | int pk | Numar, dar truncat până la întâlnirea primului caracter nenumeric |
IdCompanie | int | fk Companii->Id |
CategorieTren | R/IR/etc. | |
KmCum | int | Lungimea totală a traseului în metri |
Lungime | int | Lungimea trenului |
Numar | Numărul trenului, dar posibil să conțină și simboluri (ex: Number: 74, CategorieTren: IR, Numar: 74-1) | |
Operator | ? - Uneori conține un număr unic pentru un anumit operator, alteori este gol | |
Proprietar | ||
Putere | ||
Rang | ||
Servicii | ||
Tonaj |
Coloană | Tip de date | Descriere |
---|---|---|
NumarTren | int | fk Trenuri->Number |
Id | int | Id trasă (1, 2, ...) |
Tip | ||
CodStatieInitiala | int | fk Statii->CodStatie |
CodStatieFinala | int | fk Statii->CodStatie |
Coloană | Tip de date | Descriere |
---|---|---|
CodStatie | int pk | Codul folosit în setul de date |
Denumire | text | Numele stației (ex: București Nord Gr.A) |
Coloană | Tip de date | Descriere |
---|---|---|
NumarTren | int | fk Trenuri->Number + Trase->NumarTren |
IdTrasa | int | fk Trase->Id |
Secventa | int | Ordinea secvenței în trasă (1, 2, ...) |
Ajustari | ||
CodStaDest | int | fk Statii->CodStatie |
CodStaOrigine | int | fk Statii->CodStatie |
DenStaDestinatie | ||
DenStaOrigine | ||
Km | int | Distanța în metri între stații (ex: 3022 -> 3022 m / 3 km) |
Lungime | int | Lungimea trenului |
OraP | int | Ora plecării (numărul de secunde de la 00:00:00 în ziua primei plecări) |
OraS | int | Ora sosirii (numărul de secunde de la 00:00:00 în ziua primei plecări) |
Rci | ||
Rco | ||
Restrictie | ||
StationareSecunde | int | Numărul de secunde de staționare în stația origine |
TipOprire | ||
Tonaj | ||
VitezaLivret | int | Viteza între stația origine și destinație în km/h |