# Import naar Bestaande Database Aangepast importscript voor je bestaande `alfen` database met `transactions` tabel. ## 📋 Wat doet het script? Het script importeert transacties uit je CSV bestand naar de bestaande `transactions` tabel: - Leest `txstart2` regels (begin van laadsessie) - Leest `txstop2` regels (einde van laadsessie) - Slaat alleen complete transacties op (met start Ên stop) - Slaat `mv` (meter value) regels over - deze worden niet in de tabel opgeslagen ## 🚀 Gebruik ### 1. Pas database credentials aan Open `import_to_existing_db.py` en wijzig regel 12-18: ```python DB_CONFIG = { 'host': 'localhost', 'user': 'your_username', # Jouw MySQL gebruiker 'password': 'your_password', # Jouw MySQL wachtwoord 'database': 'alfen', # Database naam (default: alfen) 'charset': 'utf8mb4' } ``` ### 2. Installeer Python dependency (als nog niet gedaan) ```bash pip3 install mysql-connector-python ``` ### 3. Voer import uit ```bash python3 import_to_existing_db.py VAN_01971_Transactions.csv ``` ## 📊 Output Voorbeeld ``` ============================================================ Charging Station Data Importer Import naar bestaande 'transactions' tabel ============================================================ ✓ Database verbinding succesvol === Import gestart: VAN_01971_Transactions.csv === → Transactie 0x0000000000000001 gestart (wacht op stop...) ✓ Transactie 0x0000000000000001 opgeslagen (22.049 kWh) → Transactie 0x000000001150e1e3 gestart (wacht op stop...) ✓ Transactie 0x000000001150e1e3 opgeslagen (0.000 kWh) → Transactie 0x000000006905d45d gestart (wacht op stop...) ✓ Transactie 0x000000006905d45d opgeslagen (47.830 kWh) === Import voltooid === ✓ Totaal regels verwerkt: 354 ✓ Transacties gestart: 3 ✓ Transacties gestopt: 3 ✓ Transacties opgeslagen: 3 === Database Statistieken === Totaal transacties in database: 686 Totaal verbruik: 15234.567 kWh Laatste transactie: ID: 0x000000006905d45d Periode: 2025-10-31 16:40:37 - 2025-11-01 07:14:15 Verbruik: 47.830 kWh ✓ Database verbinding gesloten ``` ## ✅ Functies - **Duplicaat detectie**: Controleert of transactie_id al bestaat - **Complete transacties**: Slaat alleen op als zowel start als stop bekend zijn - **Automatische berekening**: `total_kWh` wordt automatisch berekend - **Error handling**: Duidelijke foutmeldingen bij problemen - **Statistieken**: Toont overzicht na import ## âš ī¸ Belangrijke Punten 1. **Meter values worden genegeerd**: De `mv:` regels uit je CSV worden niet opgeslagen in de transactions tabel. Als je deze ook wil bewaren, laat het me weten en ik maak een aparte tabel voor meterwaarden. 2. **Actieve transacties**: Als een transactie alleen een `txstart2` heeft maar nog geen `txstop2`, wordt deze NIET opgeslagen (staat als "pending"). 3. **Duplicaten**: Als een `transaction_id` al bestaat in de database, wordt deze overgeslagen. ## 🔍 Handige Queries Na import kun je bijvoorbeeld: ```sql -- Laatste 10 transacties SELECT transaction_id, start_timestamp, stop_timestamp, total_kWh, card FROM transactions ORDER BY stop_timestamp DESC LIMIT 10; -- Totaal verbruik per kaart SELECT card, COUNT(*) as aantal_sessies, SUM(total_kWh) as totaal_kWh, AVG(total_kWh) as gemiddeld_kWh FROM transactions GROUP BY card ORDER BY totaal_kWh DESC; -- Verbruik per dag SELECT DATE(start_timestamp) as datum, COUNT(*) as aantal_sessies, SUM(total_kWh) as totaal_kWh FROM transactions GROUP BY DATE(start_timestamp) ORDER BY datum DESC; -- Sessies langer dan 8 uur SELECT transaction_id, start_timestamp, stop_timestamp, total_kWh, TIMESTAMPDIFF(HOUR, start_timestamp, stop_timestamp) as uren FROM transactions WHERE TIMESTAMPDIFF(HOUR, start_timestamp, stop_timestamp) > 8 ORDER BY uren DESC; ``` ## 💡 Meterwaarden Ook Opslaan? Als je de tussentijdse meterwaarden (`mv:` regels) ook wil bewaren voor gedetailleerde analyse, kan ik een aanvullend script maken met een extra `meter_readings` tabel. Laat maar weten!