Bonjour,
Je possède une base de données qui fait environs 114Mo, une table comporte 40 champs et contient 4600 données sachant que j'ai 72 tables donc 331 200 données.
Cette base contient des données météos et est réactualisé 4 fois par jours (toutes les 6h). Mon problème est que je met environs 72min pour réactualiser la base de données, en gros 1min par table pour réactualisé 331 200 données.
Chaque données (température, humidité..etc) sont contenu dans des fichiers txt pour chaque échéance (+1h, +2h, +3h...+72h) en gros 5694 fichiers txt.
Actuellement j'utilise une requête de type UPDATE, j'ouvre tout les fichiers (donc 40 fichiers) de la même échéance et ensuite je fais une requête UPDATE qui met à jours toute les données en même temps 72fois de suite.
J'aurai probablement la solution avec LOAD DATA INFILE cependant je rencontre quelques difficulté que je ne comprends malgré la lecture des docs.
Je vous montre mon code
Admettons que j'ai une table avec ces champs là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $sqla = "LOAD DATA LOCAL INFILE 'TMP2m_01.txt' REPLACE INTO TABLE `data_01` FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES (`LONG`, `LAT`, `TMP_2M`); "; $sqlb = "LOAD DATA LOCAL INFILE 'TMP500mb_01.txt' REPLACE INTO TABLE `data_01` FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES (`LONG`, `LAT`, `TMP_500`); "; $resulta = mysql_query($sqla); $resultb = mysql_query($sqlb);
LONG | LAT | TMP_2M | TMP_500
Théoriquement avec cette requête tout les champs devraient se remplir et les données écrasées par les nouvelles si je recharge le fichier non ?
Car là ça me met tout à la suite mais seulement dans les champs LONG, LAT et TMP_2M et les données ne sont pas écrasées mais ajoutées, même avec le REPLACE..
Excusez moi pour le pâté au début c'est juste mettre dans l'ambiance de mon problème.
Cordialement Ludovic.
Partager