135 lines
4.0 KiB
Markdown
135 lines
4.0 KiB
Markdown
# 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! |