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 folderul datafiles
- se completează fișierul
datafiles/mapping.json
cu numele companiilor
- se rulează
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
:
# 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 |