Page 1 sur 1

CSV & Mysql

Posté : 30 sept. 2008, 18:49
par zexus
Bonjour !

je dispose d'une application d'où je récupère un historique sous forme d'un fichier csv, j'aimerai convertir le fichier et inserer les données dans une table Mysql.

voici une partie du fichier csv.
  • Account,"Fee Type","Fee Name","Description","From","To","Amount, USD"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-09-22 00:00:00","2008-09-28 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-09-15 00:00:00","2008-09-21 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-09-08 00:00:00","2008-09-14 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-09-01 00:00:00","2008-09-07 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-25 00:00:00","2008-08-31 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-24 00:00:00","2008-08-24 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-23 00:00:00","2008-08-23 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-22 00:00:00","2008-08-22 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-21 00:00:00","2008-08-21 23:59:59","0.00000"
    000982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-20 00:00:00","2008-08-20 23:59:59","0.00000"

Merci d'avance

Cordialement
ZeXuS

Posté : 30 sept. 2008, 19:30
par @rthur
Bonjour,

Quel est le problème que tu rencontres?
Sauf erreur de ma part phpMyAdmin permet d'importer directement des fichier CSV donc il te suffit de créer une table qui correspondent à tes champs et ensuite tu fais importer -> tu sélectionnes ton fichier, tu coche "CSV" et c'est bon :)

Posté : 01 oct. 2008, 04:18
par zexus
Merci pour votre réponse.

Je vous explique la procédure que j'ai suivi

j'ai créé une table avec PhpMyadmin que j'ai nommé histo avec les champs suivants :

Account, FreeType, FreeName, Description, From, To, AmountDZD

Mon fichier CSV est comme suite :

Code : Tout sélectionner

213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-09-22 00:00:00","2008-09-28 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-09-15 00:00:00","2008-09-21 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-09-08 00:00:00","2008-09-14 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-09-01 00:00:00","2008-09-07 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-25 00:00:00","2008-08-31 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-24 00:00:00","2008-08-24 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-23 00:00:00","2008-08-23 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-22 00:00:00","2008-08-22 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-21 00:00:00","2008-08-21 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-20 00:00:00","2008-08-20 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-19 00:00:00","2008-08-19 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-18 00:00:00","2008-08-18 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-17 00:00:00","2008-08-17 23:59:59","0.00000" 213982400347,"Subscription Fee","Tripple play","Subscription Fee","2008-08-16 00:00:00","2008-08-16 23:59:59","0.00000"
Dans le menu Importer de PhpMyadmin j'utilise le format CSV via LOAD DATA et comme options j'ai mis :
Champs terminés par : , (virgule)
Champs entourés par: "
Caractère spécial: /
Lignes terminées par : auto
pour le reste j'ai laissé par défaut

lorsque j'exécute ça m'affiche :
L'importation s'est terminée avec succès, 1 requêtes exécutées.
  • requête SQL:
    LOAD DATA LOCAL INFILE 'D:\\wamp\\tmp\\php1A.tmp' INTO TABLE `histo` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'# Nombre d'enregistrements affectés : 41
a première vue tout est OK mais lorsque je veux afficher ma table avec les enregistrements j'ai remarqué que chaque ligne de mon fichier CSV est insérée dans le champs Account et le reste des champs sont vides.

voila j'espère que j'ai bien expliqué mon problème .

Cordialement
ZeXuS

Posté : 01 oct. 2008, 06:44
par zeus
Est-ce qu'il est possible que tu nous postes le schema de ta table sous la forme d'une instruction "CREATE TABLE" (fonction "Exporter" de phpMyAdmin) ?

J'aimerais pouvoir tester tout ça chez moi

Posté : 01 oct. 2008, 12:09
par zexus
j'ai pas de schéma spécifique,

Code : Tout sélectionner

CREATE TABLE `histo` ( `Account` varchar(255) NOT NULL, `FreeType` varchar(255) NOT NULL, `FreeName` varchar(255) NOT NULL, `Description` varchar(255) NOT NULL, `From` varchar(255) NOT NULL, `To` varchar(255) NOT NULL, `AmountDZD` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1

Posté : 03 oct. 2008, 23:24
par zeus
A priori, le LOAD DATA INFILE ne gère pas très bien la virgule comme séparateur de champ ...

J'ai essayé de remplacer les virgules pas des ; et de mettre des " autour du 1er champ et tout est passé sans soucis.
Est-ce une solution acceptable pour toi ?

Posté : 06 oct. 2008, 13:46
par zexus
je viens de refaire le test comme vous avez expliqué et ca marche chez moi aussi !

Merci a vous et a la communauté de PHPFrance