Csv en sql

Eléphant du PHP | 216 Messages

17 janv. 2007, 11:54

Bonjour j’ai deux fichiers dans un même répertoire :

Un fichier table.sql qui contient la requête suivante :

Code : Tout sélectionner

DROP TABLE IF EXISTS `lldiffusion_produit`; CREATE TABLE `lldiffusion_produit` ( `id` int(10) unsigned NOT NULL auto_increment, `marque` varchar(128) NOT NULL default '', `designation` varchar(128) NOT NULL default '', `univers` varchar(128) NOT NULL default '', `categorie` varchar(128) NOT NULL default '', `sous_categorie` varchar(128) NOT NULL default '', `resume_court` varchar(150) NOT NULL default '', `resume_long` text NOT NULL, `prix_ttc` decimal(10,2) unsigned NOT NULL default '0.00', `disponibilite` varchar(128) NOT NULL default '', PRIMARY KEY (`id`), KEY `categorie` (`categorie`) ) TYPE=MyISAM COMMENT='TABLE DES PRODUITS' AUTO_INCREMENT=719 ;
et j’ai un fichier :

fichier.csv

qui contient le contenu des champs


j’aimerais ajouter dans le fichier table.sql

les ordre d’insert en fonction de mon fichier csv.

Pouvez-vous m’aider s’il vous plaît ?

Merci d'avance pour votre aide.

ViPHP
ViPHP | 1961 Messages

17 janv. 2007, 12:19

Bonjour,

Si c'est un fichier CSV, il ne contient pas d'instructions "INSERT",
donc tu ne peux pas insérer les données à la suite de ta création de table dans le même processus MySQL.

Pour pouvoir insérer des données au format CSV tu dois utiliser l'instruction "LOAD DATA [LOCAL] INFILE"
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

17 janv. 2007, 12:33

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

Eléphant du PHP | 216 Messages

17 janv. 2007, 13:54

pardon j'ai oublié de vous donner une information importante, mon hébergeur n'accepte pas la commande load data.
Je suis donc obligé d'alimenter mon fichier table.sql

avec les ordres d'insert dedans.
Puis je n'aurais plus qu'à importer mon fichier table.sql et l'exécuter.

ViPHP
ViPHP | 1961 Messages

17 janv. 2007, 14:08

Re,

Ok, c'était effectivement une info importante.
As- tu en local un serveur MySQL ?

Si c'est le cas, importe ton fichier via LOAD DATA, ensuite si tu as phpMyAdmin,
exporte-le au format SQL avec cet outil.

Si tu n'as pas phpMyAdmin, installe MySQL Administrateur et exporte avec l'outil.
Sinon il faudra passer par la ligne de commande avec "mysqldump"

Si tu n'as pas de serveur MySQL local, tu devras faire un script qui transforme ton fichier CSV en instructions "INSERT".
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 216 Messages

18 janv. 2007, 10:02

Si tu n'as pas de serveur MySQL local, tu devras faire un script qui transforme ton fichier CSV en instructions "INSERT".


c'est justement ce que je demande...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 janv. 2007, 10:15

Donc, comme cela te l'a été conseillé sur développez.net, il faut que tu utilises la fonction PHP fgetcsv() pour récupérer ligne après ligne ton fichier et que tu écrives dans un fichier (fopen(), fwrite(), fclose()) les requêtes INSERT que tu auras construit avec les champs récupéré.

Je pense qu'avec les éléments présent dans cette page et l'aide qui est pointée sur chaque fonction, tu devrais t'en sortir mais n'hésite pas à revenir nous poser des questions ;)
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