Bonjour et merci pour votre participation!
ton fichier c'est du csv, il y a des fonctions le parser simplement
On me conseille d'utiliser fgetcsv, qu'en pensez vous?
http://php.net/manual/fr/function.fgetcsv.php
Code : Tout sélectionner
<?php
if (($handle = fopen("fic34154001-2013-09-30.data", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
print_r($data);
}
fclose($handle);
}
?>
Cela donne :
Array ( [0] => POSTE [1] => DATE [2] => GLOT ) Array ( [0] => 34154001 [1] => 20130929 [2] => 1168 )
Comment se retrouver les données à la ligne 2, la numérotation du ARRAY n'est pas indiqué, donc si je fais print_r($data[2]); cela indique GLOT1168 !
est ce qu'il y a toujours l'entête (la 1ère ligne) ?
Il y a toujours la première ligne effectivement, mais avec preg_match('/(\d+);(\d+);(\d+)/', $line, $matches); je ne récupère que les chiffres.
quand tu décris la ligne 34154001;20130929;1168, tu veux dire que
- la table s'appel : 34154001
- la date est 20130920
- la valeur est 1168 ?
je ne vois pas bien l’intérêt d'une table avec un numéro pour nom c'est pas logique et incompréhensible.
Je ne décide pas du contenu de ce fichier, néanmoins je peux gérer son intégration, ainsi effectivement le numéro 34154001 est un numéro unique de datalogger.
J'aurais donc plusieurs Dataloggers qui vont déposer leurs données sur ce répertoire, c'est pourquoi j'ai pensé que la base serait par exemple "datalogger" et les tables de differents nom des dataloggers (numéro donc).
Après si il est préférable de tout injecter dans la même table pour des questions de rapidité de traitement et lecture, je ne suis pas contre!
pour continuer ce que Sirakawa a avancé, avec l'extension mysqli ou PDO tu va pouvoir utiliser une requête préparée pour l'insertion ce qui va te permettre d'accélérer un peu la chose.
Je suis en train d'en prendre connaissance, quelle est la plus simple, efficace et répandue des deux?
attention au temps de traitement des fichiers il ne faut pas que le cron lance deux fois le script en parallèle si tu ne prévois pas le cas si non va y avoir des doublons
Bonne remarque, comment s'en prémunir autrement que la suppression des fichiers après lecture (parce que sinon, les garder ne me pose pas de souci particulier.
Deja, quelles fonctions vous me recommandez pour ouvrir un répertoire et faire le traitement en lot. Vous me recommandez de traiter les fichiers un par un (j'ouvre, je traite, j'injecte SQL, je supprime), ou un traitement en une seule fois (j'ouvre les fichiers un par un, je traite les fichiers un par un, j'injecte en SQL en une seule fois, je supprime tout le repertoire)?
Merci!
[/list]