Bonjour à tous,

Je récolte des données issue de la lecture d'un fichier csv qui ressemble à ça :

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|
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 : 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
              (...)
            ]
          ]
        ]
      ]
    ]
  ]
]
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
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 : 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
            ]
         ]
       ]
    ]
  ]
]
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.