Bonjour à tous,
Je récolte des données issue de la lecture d'un fichier csv qui ressemble à ça :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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|
Je cherche à créer un tableau qui aurait cette forme :
Afin d'optimiser les requêtes sql je souhaite grouper les actions, par exemple avec les 3eme lignes du fichier cela donnerait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 (...) ] ] ] ] ] ] ]
Ce qui donnerait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
De cette manière j'aurais juste à parcourir le tableau pour reconstruire les requêtes en respectant l'ordre d'exécution (date, heure).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ] ] ] ] ] ]
Ca c'est la théorie mais dans la pratique je n'y arrive pasEn php je n'aurais aucun problème mais je ne pige pas la logique avec python. Est-ce faisable, pertinent ?
Merci d'avance.
Partager