Tom's Guide > Forum > Programmation > [résolu]Importation de fichier csv vers mysql

[résolu]Importation de fichier csv vers mysql

Forum Programmation : [résolu]Importation de fichier csv vers mysql

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

salut, je voudrais importer un fichier csv vers mysql maisdans le fichier csv il y a des champs qui sont des dates que je saisi au format JJ/MM/AAAA.
le problème est que mysql supporte le format ricain AAA/MM/JJ
je veux donc que ça convertisse directement le format des dates mais je ne sais pas comment faire.
dans mon fichier php je faisais
$query="LOAD DATA LOCAL INFILE '$chemin_fichier'
REPLACE INTO TABLE $nameTable
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'";

en ayant positionner les champs de ma table en date la où il le faut, j'obtiens des dates 0000/00/00 en bdd.
Comment faire pour convertir ces dates françaises en américain tout en gardant biensur une saisie en format français?
merci de votre aide.


Message édité par mcpherson le 25-05-2009 à 13:03:44
------------------------------ "Parlons moins codons plus"
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

bon j'ai un petit début de solution mais ça ne marche que pour la première date
je m'explique :
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 nopuvelle ligne dans le fichier temporaire.
sauf qu'en remplacant avec ereg_replace, ça remplace chaque date trouvée par ma date convertie.

if (!($fichier_temp = fopen("C:/wamp/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);
}
}
}

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.
comment faire pour remplacer chaque date par sa bonne valeur?

------------------------------ "Parlons moins codons plus"
Répondre à mcpherson

pour les intéressés voila la solution :
$pattern ="#([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})#";
while(!feof($fp))
{ $ligne=fgets($fp, 10000);
$nouvelle = preg_replace($pattern, '$3-$2-$1', $ligne);
fwrite($fichier_temp, $nouvelle);
}

utilisation de la fonction preg_replace

------------------------------ "Parlons moins codons plus"
Répondre à mcpherson
Tom's Guide > Forum > Programmation > [résolu]Importation de fichier csv vers mysql
Aller à :

Il y a 1855 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens