Créer un tableau à plusieurs dimensions
Bonjour à tous,
Je récolte des données issue de la lecture d'un fichier csv qui ressemble à ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
TABLE|ACTION|DATE|HEURE|PIECE|CHAMP|LIGNE|VALEUR <--- Entête non présente dans le fichier
SQUOTE|INSERT|01-07-2021|143704|DEVHIL21070001| |SQHNUM|DEVHIL21070001
SQUOTE|UPDATE|01-07-2021|143758|DEVHIL21070001| |QUODAT|12082021
SQUOTED|UPDATE|01-07-2021|144844|DEVHIL21070001|1000|QTY|10
SQUOTED|INSERT|01-07-2021|152017|DEVHIL21070001|2000|ITMREF|STA
SQUOTED|INSERT|01-07-2021|152017|DEVHIL21070001|2000|QTY|1
SQUOTE|DELETE|01-07-2021|162821|DEVHIL21070001| |QUODAT|
SQUOTE|DELETE|01-07-2021|162821|DEVHIL21070001| |SQHNUM|
SQUOTED|DELETE|01-07-2021|162821|DEVHIL21070001|1000|ITMREF|
SQUOTED|DELETE|01-07-2021|162821|DEVHIL21070001|1000|QTY|
SQUOTED|DELETE|01-07-2021|162821|DEVHIL21070001|2000|ITMREF|
SQUOTED|DELETE|01-07-2021|162821|DEVHIL21070001|2000|QTY| |
Ce fichier est issue d'une base de données qui réalise une audit par rapport à des actions faites sur des tables et des champs. Je n'ai pas la main sur la structure du résultat. Je dois traiter ce fichier pour mettre à jour une autre base, la mise à jour sera effectué toute les 15mn.
Je cherche à créer un tableau qui aurait cette forme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [
DATE [
HEURE [
TABLE [
ACTION [
PIECE [
LIGNE [ <-- pour certaine table
CHAMP:VALEUR
(...)
]
]
]
]
]
]
] |
Afin d'optimiser les requêtes sql je souhaite grouper les actions, par exemple avec les 3eme lignes du fichier cela donnerait :
Code:
1 2 3
| INSERT INTO squote(SQHNUM) VALUES("DEVHIL21070001");
UPDATE squote SET QUODAT= 12082021 WHERE SQHNUM = "DEVHIL21070001";
UPDATE squoted SET QTY = 10 WHERE SQHNUM = "DEVHIL21070001" AND LIGNE = 1000; |
Ce qui donnerait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| [
01-07-2021 [
143707 [
SQUOTE [
INSERT [
DEVHIL21070001 [
'SQHNUM' : 'DEVHIL21070001'
(...)
]
]
]
]
143758 [
SQUOTE [
UPDATE [
DEVHIL21070001 [
'QUODAT' : '12082021'
(...)
]
]
]
]
144844 [
SQUOTED [
UPDATE [
DEVHIL21070001 [
1000 [
'qty' : 10
]
]
]
]
]
] |
De cette manière j'aurais juste à parcourir le tableau pour reconstruire les requêtes en respectant l'ordre d'exécution (date, heure).
Ca c'est la théorie mais dans la pratique je n'y arrive pas :( En php je n'aurais aucun problème mais je ne pige pas la logique avec python. Est-ce faisable, pertinent ?
Merci d'avance.