Page 1 sur 1

Csv en sql

Posté : 17 janv. 2007, 11:54
par sam01
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.

Posté : 17 janv. 2007, 12:19
par Ajoloca
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"

Posté : 17 janv. 2007, 12:33
par zeus

Posté : 17 janv. 2007, 13:54
par sam01
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.

Posté : 17 janv. 2007, 14:08
par Ajoloca
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".

Posté : 18 janv. 2007, 10:02
par sam01
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...

Posté : 18 janv. 2007, 10:15
par zeus
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 ;)