ajout de script / modif d'enum et simplification du lancement en local
This commit is contained in:
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python3
|
||||
import csv
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
def clean_csv_file(file_path: Path):
|
||||
"""
|
||||
Nettoie un CSV directement en place :
|
||||
- remplace "NULL" par ""
|
||||
- supprime les espaces parasites
|
||||
- force le même nombre de colonnes que l'en-tête
|
||||
"""
|
||||
cleaned_rows = []
|
||||
|
||||
with open(file_path, "r", encoding="utf-8-sig", newline="") as infile:
|
||||
reader = csv.reader(infile)
|
||||
try:
|
||||
header = next(reader)
|
||||
except StopIteration:
|
||||
print(f"[⚠️] Fichier vide : {file_path}")
|
||||
return
|
||||
|
||||
nb_cols = len(header)
|
||||
cleaned_rows.append([h.strip() for h in header])
|
||||
|
||||
for i, row in enumerate(reader, start=2):
|
||||
# Ajuste le nombre de colonnes
|
||||
if len(row) < nb_cols:
|
||||
row.extend([""] * (nb_cols - len(row)))
|
||||
elif len(row) > nb_cols:
|
||||
row = row[:nb_cols]
|
||||
|
||||
# Nettoyage cellule par cellule
|
||||
row = [cell.strip().replace("NULL", "") for cell in row]
|
||||
cleaned_rows.append(row)
|
||||
|
||||
# Réécriture dans le même fichier
|
||||
with open(file_path, "w", encoding="utf-8", newline="") as outfile:
|
||||
writer = csv.writer(outfile)
|
||||
writer.writerows(cleaned_rows)
|
||||
|
||||
print(f"[✔] Nettoyé : {file_path}")
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) > 1:
|
||||
base_dir = Path(sys.argv[1])
|
||||
else:
|
||||
base_dir = Path("bdd/data_test")
|
||||
|
||||
print(f"🔎 Nettoyage des CSV dans : {base_dir}")
|
||||
for file_path in base_dir.glob("*.csv"):
|
||||
clean_csv_file(file_path)
|
||||
|
||||
print(f"✅ Terminé. Les fichiers CSV ont été écrasés (nettoyés en place).")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,64 @@
|
||||
-- ==============================================
|
||||
-- Script de vérification d'intégrité des données
|
||||
-- ==============================================
|
||||
|
||||
-- 1) Vérifier unicité des emails
|
||||
SELECT email, COUNT(*) AS doublons
|
||||
FROM utilisateurs
|
||||
GROUP BY email
|
||||
HAVING COUNT(*) > 1;
|
||||
|
||||
-- 2) Vérifier utilisateurs sans rôle
|
||||
SELECT id, email
|
||||
FROM utilisateurs
|
||||
WHERE role IS NULL OR role = '';
|
||||
|
||||
-- 3) Vérifier cohérence enfants → parents
|
||||
SELECT e.id AS enfant_id, e.nom, e.prenom
|
||||
FROM enfants e
|
||||
LEFT JOIN enfants_parents ep ON e.id = ep.enfant_id
|
||||
WHERE ep.parent_id IS NULL;
|
||||
|
||||
-- 4) Vérifier cohérence enfants_parents → parents existants
|
||||
SELECT ep.enfant_id, ep.parent_id
|
||||
FROM enfants_parents ep
|
||||
LEFT JOIN parents p ON ep.parent_id = p.id
|
||||
WHERE p.id IS NULL;
|
||||
|
||||
-- 5) Vérifier cohérence dossiers → utilisateurs
|
||||
SELECT d.id, d.parent_id
|
||||
FROM dossiers d
|
||||
LEFT JOIN parents p ON d.parent_id = p.id
|
||||
WHERE p.id IS NULL;
|
||||
|
||||
-- 6) Vérifier cohérence contrats → utilisateurs et assistantes
|
||||
SELECT c.id, c.parent_id, c.assistante_id
|
||||
FROM contrats c
|
||||
LEFT JOIN parents p ON c.parent_id = p.id
|
||||
LEFT JOIN assistantes_maternelles am ON c.assistante_id = am.id
|
||||
WHERE p.id IS NULL OR am.id IS NULL;
|
||||
|
||||
-- 7) Vérifier cohérence validations → utilisateurs
|
||||
SELECT v.id, v.valide_par
|
||||
FROM validations v
|
||||
LEFT JOIN utilisateurs u ON v.valide_par = u.id
|
||||
WHERE u.id IS NULL;
|
||||
|
||||
-- 8) Vérifier cohérence dates enfants
|
||||
SELECT id, nom, prenom, date_naissance
|
||||
FROM enfants
|
||||
WHERE date_naissance > CURRENT_DATE;
|
||||
|
||||
-- 9) Vérifier cohérence date agrément assistantes
|
||||
SELECT id, nom, prenom, date_agrement
|
||||
FROM assistantes_maternelles
|
||||
WHERE date_agrement > CURRENT_DATE;
|
||||
|
||||
-- 10) Vérifier NULL obligatoires (ex: NIR des assistantes)
|
||||
SELECT id, nom, prenom
|
||||
FROM assistantes_maternelles
|
||||
WHERE nir IS NULL OR nir = '';
|
||||
|
||||
-- ==============================================
|
||||
-- Fin du script
|
||||
-- ==============================================
|
||||
Reference in New Issue
Block a user