Bonjour, je voudrais importer un fichier csv en bdd, le problème qui se pose c'est les dates. Je les saisie au format JJ/MM/AAAA sous excel mais sous mysql c'est AAAA/MM/JJ donc il faut que j'envoie un fichier à mysql avec les dates converties.
J'ai essayé un petit bout de code mais il reste un problème.
je m'explique :
mon fichier csv peut contenir plusieurs champs dates sur la meme ligne.
je crée un fichier temporaire pour y mettre le contenu du fichier csv avec les dates converties.
je récupère les lignes du fichier et pour chacune je cherche la date suivant l'expression régulière.
je permute les éléments des dates et j'insère la nouvelle ligne dans le fichier temporaire.
sauf qu'en remplacant avec ereg_replace, ça remplace chaque date trouvée par ma date convertie.
ensuite pour impoter le fichier je fais
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 if (!($fichier_temp = fopen("Cwamp/www/xlsmagique/liste/fichier.csv","w" ))) echo "Echec de l'ouverture du fichier"; else { while(!feof($fp)) { $ligne=fgets($fp, 10000); $pattern = "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})"; if(ereg($pattern, $ligne, $tab)) { $dateFR=$tab[3]."/".$tab[2]."/".$tab[1]; $nouvelle=ereg_replace($pattern, $dateFR, $ligne); fwrite($fichier_temp, $nouvelle); } } }où je charge le fichier temporaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $query="LOAD DATA LOCAL INFILE '$chemin_fichier' REPLACE INTO TABLE $nameTable FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'";
je me retrouve donc avec des dates converties mais seulement la première date est bonne, ensuite toutes les autres ont la meme valeur que la première puisque je fais un remplacement de chaque date trouvée par ma $dateFR.
comment faire pour remplacer chaque date par sa bonne valeur?
merci d'avance de votre aide.
Partager