Import csv vers Mysql
5 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Import csv vers Mysql
Bonjour
Pour un site j'ai eu besoin de faire un petit script pour importer des fichies csv vers une table Mysql.
Voici le script :
Le script n'affiche aucune erreur lors de son execution mais quand je vérifie si tous les enregistrements ont été importés je remarque qu'il ne le sont pas tous.
Exemple : De 1412 enregistrements juste 663 sont importés.
Questions :
Comment importés tous les enregistrements ?
Comment faire pour que les anciens enregistrements ne soit pas suprimés lors de l'import d'un nouveau fichier csv ?
Merci d'avance
Pour un site j'ai eu besoin de faire un petit script pour importer des fichies csv vers une table Mysql.
Voici le script :
- Code: Tout sélectionner
<?
mysql_connect('localhost', 'root', '');
mysql_select_db('mabase');
$row = 1;
$handle = fopen ("fichier.csv","r");
while ($data = fgetcsv($handle, 1000, ";"))
{
mysql_query("INSERT INTO matable(`id`, `marque`, `cartouche`, `Descriptif`, `Imprimante`, `fournisseur`, `url`) VALUES('".$row."', '".$data[0]."', '".$data[1]."', '".$data[2]."', '".$data[3]."', '".$data[4]."', '".$data[5]."')");
$row++;
}
fclose ($handle);
?>
Le script n'affiche aucune erreur lors de son execution mais quand je vérifie si tous les enregistrements ont été importés je remarque qu'il ne le sont pas tous.
Exemple : De 1412 enregistrements juste 663 sont importés.
Questions :
Comment importés tous les enregistrements ?
Comment faire pour que les anciens enregistrements ne soit pas suprimés lors de l'import d'un nouveau fichier csv ?
Merci d'avance
Tu peux te simplifier la vie en utilisant la syntaxe LOAD DATA INFILE de mySQL.
http://dev.mysql.com/doc/refman/4.1/en/load-data.html
La syntaxe va ressembler à un truc de ce style
tu peux définir quels sont les séparateur de champ, les fins de ligne, les caractères qui entourent tes champs, etc....
Pour gérer l'import tu as aussi l'option IGNORE | REPLACE.
Cette option permet de savoir si tu remplace ou non les enregistrements déjà existant.
Dans ton cas tu veux l'option : IGNORE
Pour les lignes en erreur, il est possible que certaines lignes de ton fichier ne respectent pas les règles de ta table.
http://dev.mysql.com/doc/refman/4.1/en/load-data.html
La syntaxe va ressembler à un truc de ce style
- Code: Tout sélectionner
LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
tu peux définir quels sont les séparateur de champ, les fins de ligne, les caractères qui entourent tes champs, etc....
Pour gérer l'import tu as aussi l'option IGNORE | REPLACE.
Cette option permet de savoir si tu remplace ou non les enregistrements déjà existant.
Dans ton cas tu veux l'option : IGNORE
- Code: Tout sélectionner
LOAD DATA INFILE IGNORE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
Pour les lignes en erreur, il est possible que certaines lignes de ton fichier ne respectent pas les règles de ta table.
Salut
Merci spidetra j'ai réussi à régler ce problème.
J'ai une autre question s'il vous plait.
Dans une table 'imprimantes' il y'a plusieurs champs (id, marque, imprimante, cartouche, fournisseur ... ).
Dans une page je voudrais lister toutes les marques ça parrait facile :
Le problème ici c'est que dans la page où je met ce code, j'obtient plusieurs fois la même marque puisque plusieurs imprimantes peuvent avoir la même marque.
Comment faire pour afficher toutes la marque sans doublons ?
Merci encore
Merci spidetra j'ai réussi à régler ce problème.
J'ai une autre question s'il vous plait.
Dans une table 'imprimantes' il y'a plusieurs champs (id, marque, imprimante, cartouche, fournisseur ... ).
Dans une page je voudrais lister toutes les marques ça parrait facile :
- Code: Tout sélectionner
mysql_connect($host, $username, $password);
mysql_select_db($dbname);
$reponse = mysql_query("SELECT marque FROM imprimantes");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p><?php echo $donnees['marque']; ?> </p>
<?php
}
mysql_close();
?>
Le problème ici c'est que dans la page où je met ce code, j'obtient plusieurs fois la même marque puisque plusieurs imprimantes peuvent avoir la même marque.
Comment faire pour afficher toutes la marque sans doublons ?
Merci encore
amazigh25 a écrit:Salut
Merci spidetra j'ai réussi à régler ce problème.
J'ai une autre question s'il vous plait.
Dans une table 'imprimantes' il y'a plusieurs champs (id, marque, imprimante, cartouche, fournisseur ... ).
Dans une page je voudrais lister toutes les marques ça parrait facile :
....
Le problème ici c'est que dans la page où je met ce code, j'obtient plusieurs fois la même marque puisque plusieurs imprimantes peuvent avoir la même marque.
Comment faire pour afficher toutes la marque sans doublons ?
Merci encore
DISTINCT est ton ami. Modifie ta requête.
- Code: Tout sélectionner
SELECT DISTINCT marque FROM imprimantes
5 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- CSV AdStats v4 : le logiciel pour analyser ses statistiques AdSense
- Les albums web Picasa passent à 1 Go de stockage
- Importer tout son blog dans Google Base
- Gestion des langues et des sessions en PHP / MySQL
- Du nouveau dans le Centre pour Webmasters de Live Search
- Passage à l'heure d'été/hiver sur un forum phpBB
- Google Analytics sur un téléphone Androïd
- GoogleStats : analyse temps réel des visites de Google sur votre site
- Sortie officielle de GoogleStats v2.0 !
- Des stats AdSense détaillées !
Consultez la description détaillée des produits ou services de Google suivants : Google Docs, Google Présentations
Qui est en ligne
Utilisateurs parcourant ce forum: Baidu [Spider] et 0 invités



le forum