CSV & Mysql

Petit nouveau ! | 9 Messages

30 sept. 2008, 18:49

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 sept. 2008, 19:30

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 :)
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 9 Messages

01 oct. 2008, 04:18

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 oct. 2008, 06:44

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 9 Messages

01 oct. 2008, 12:09

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
Cordialement
ZeXuS

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 oct. 2008, 23:24

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 ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 9 Messages

06 oct. 2008, 13:46

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
Cordialement
ZeXuS