So, hier ist mein Ergebnis:
Voraussetzung CSV-Datei, siehe Post 1
Vorgehensweise:
Integer-Variable anlegen, Loggen einschalten.
ID der Variable in dem Script eintragen
Script starten
Reaggregieren
Das Script legt alle Unterverzeichnisse Jahr und Monat an und speichert die Werte am entsprechenden Platz.
Ich habe dies zunächst bei einem kleinen Testsystem auf einem Raspberry versucht, um meine grosse Datenbank wegen möglicher Fehler zu schonen.
Das läuft z.Zt. nur auf dem RasPi wegen der system()-Befehle zum Anlegen der Unterverzeichnisse.
Bitte bei Windows oder Mac-Anwendung daran denken.
<?
// CSV-Datei in die IPS-Datenbank einfügen
// von audi2010 26.10.2016
//
$id = 50285 /*[CSV-Import\Zeitumwandlung\Tageswerte]*/ ; //ID der Variablen, die gefüllt werden soll
$filein = '/home/pi/Downloads/RegenTab.csv';
$jahr = '1998' ;
$monat = '01' ;
$fileout = '/var/lib/symcon/db/' . $jahr . "/" . $monat;
echo $fileout;
$handle = fopen($filein, 'r');
$data = fread($handle, filesize($filein));
fclose($handle);
$arr = explode("
", $data);
foreach ($arr as $tag) {
$pos = strpos($tag, ',');
$zeit = intval(substr($tag,0,$pos));
$jahr = date('Y', $zeit);
$monat = date('m', $zeit);
$wert = intval(substr($tag, $pos+1));
$fileout = '/var/lib/symcon/db/' . $jahr . "/" . $monat . "/" . $id . ".csv";
// Prüfen, ob Unterverzeichnis existiert
if (file_exists('/var/lib/symcon/db/' . $jahr)) {
// echo $jahr . " existiert" . "
" ;
}
else {
//Jahr anlegen
system('mkdir /var/lib/symcon/db/' . $jahr);
// echo $jahr . " wurde angelegt" . "
" ;
}
//Prüfen und Anlegen der Monatsverzeichnisse
if (file_exists('/var/lib/symcon/db/' . $jahr . "/" . $monat)) {
//echo $monat . "/" . $jahr . " existiert" . "
" ;
}
else {
//Monat anlegen
system('mkdir /var/lib/symcon/db/' . $jahr . "/" . $monat);
echo $monat . "/" . $jahr . " wurde angelegt" . "
" ;
}
// Prüfen, ob Datei im UV existiert
$hout = fopen($fileout, 'a');
fwrite($hout, ($zeit . "," . $wert . "
"));
unset($tag);
fclose($hout);
}
?>
Was mir auffällt. er reaggregiert nur ab 10.09.2001. Das ist der Moment, indem der Unix-Timestamp von 9 auf 10 Stellen springt.
Die Werte 1998 bis 2000 sind zwar gespeichert, erscheinen aber nicht im Archiv.
Mir ist durchaus bewusst, dass die fehlenden Werte wohl bei niemand, ausser mir gebraucht werden, aber vielleicht gibt es hier ein einfache Lösung.