Importer un fichier CSV dans une base MySQL

omonpedro Messages postés 2 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 10 février 2011 - 10 févr. 2011 à 06:51
omonpedro Messages postés 2 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 10 février 2011 - 10 févr. 2011 à 19:34
Bonjour,

J'ai besoin d'importer un fichier CSV (en provenance d'une base MSSQL) dans une base MySQL. Ce fichier contient un champ Date au format JJ/MM/AAAA HH:MM:SS:MMM que je voudrais importer dans un champ datetime de ma nouvelle table MySQL

Avec cette requête, l'import se passe bien, sauf que comme le format de date n'est pas bon, toutes les dates sont mises à zero.
$query= "LOAD DATA INFILE '/Library/WebServer/Documents/file.csv' INTO TABLE `MaTable` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' ";

J'ai contourné le problème en chargeant le CSV dans un tableau, en modifiant la date et en l'inserrant dans la table avec une succession de requete INSERT INTO MaTable.
Ca marchait jusqu'à ce que je récupère des .csv de 200000 lignes. Là, Firefox plante en cours d'import, Safari en importe 20% avant de sortir une erreur (Erreur réseau #-1001).

Ma question: est-il possible de modifier à la volée la date avec le LOAD DATA INFILE ?
Si non, avez-vous une astuce pour contourner le problème ?

Précision: à terme, le processus d'importation doit être réalisé par des utilisateurs très "basiques". Ca doit donc rester très simple et le plus transparent possible.

Désolé d'avoir été un peu long ...

2 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
10 févr. 2011 à 10:01
bonjour

fractionne ton chargement par tranche de 10000

? ta requete

while (1) {
mysql_query(" ? LIMIT 10000");
if (mysql_affected_rows() == 0) {
// fait
break;
}
// pause
usleep(50000);
}

date, datetime
tu charges en date puis tu mais le champs en datetime avec phpmyadmin
ça marche ...


a++
0
omonpedro Messages postés 2 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 10 février 2011
10 févr. 2011 à 19:34
Merci pour ta réponse.

je vais essayer d'adapter ta boucle à mon code.
0
Rejoignez-nous