begin process at 2012 05 28 22:32:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Envoyer un fichier CSV dans une base


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Envoyer un fichier CSV dans une base

jeudi 28 janvier 2010 à 09:10:00 | Envoyer un fichier CSV dans une base

Schlaf

Bonjour,
Dans le cadre d'une gestion RH pour une agence EDF, je dois mettre a jour une table qui contients tous les agents de l'agence gràce a un script PHP.
La liste des agents se trouvent dans un fichier .csv qui est généré tous les mois. Je n'utilise que certains champs du fichier CSV.
Pour cela j'ai créé un code qui génère une requete a partir du fichier.
Le problème c'est que le fichier contient plus de 6000 enregistrements et l'envoi de la requete INSERT est très longue, l'explorateur plante.
J'ai bien modifié la valeur du time limit dans php.ini.
Y a t-il une manière de procéder pour accélérer le processus?
PS : Mon site inclu le PDO

Voici mon code :

Code PHP :
<?php

// Nom du fichier
$nomfichier=$_GET["nomfichier"];

// Ouverture du fichier
$file = fopen( $nomfichier, 'r' ); 

// Connection à la base
$connect = mysql_connect('localhost','root','');
mysql_select_db('bdd',$connect);
if (!$connect) {die('Connexion impossible : ' . mysql_error());}

// Parcours toutes les lignes
$i=0; 
$Insert="INSERT INTO `to_agent` VALUES ";

while ( ! feof( $file ) )
{
    $i++; // on incrémente le numéro de la ligne
	$line = fgets( $file, 1024 );
	if ( strlen( $line ) > 2 && $i>1 ) 
	{
		$line = addslashes( $line );
		$donnees = explode(";", $line);	
		if ($i==2)// Pour la 2ere ligne, la 1ere ligne est exclue
		{
			$Insert=$Insert."('$donnees[8]','$donnees[10]','$donnees[11]','$donnees[13]','$donnees[14]','$donnees[22]','$donnees[23]','$donnees[24]','$donnees[16]','$donnees[17]','$donnees[18]','$donnees[0]','$donnees[2]','$donnees[4]','$donnees[6]')";
		}
		else  // Pour le reste des lignes
		{
			$Insert=$Insert.",('$donnees[8]','$donnees[10]','$donnees[11]','$donnees[13]','$donnees[14]','$donnees[22]','$donnees[23]','$donnees[24]','$donnees[16]','$donnees[17]','$donnees[18]','$donnees[0]','$donnees[2]','$donnees[4]','$donnees[6]')";
		}
	}
}

$result = mysql_query($Insert);

?>
jeudi 28 janvier 2010 à 10:22:56 | Re : Envoyer un fichier CSV dans une base

kohntark

Membre Club
Salut,

Regarde du côté de LOAD DATA INFILE

Cordialement,



Kohntark -

jeudi 28 janvier 2010 à 13:00:04 | Re : Envoyer un fichier CSV dans une base

Schlaf

J'ai du mal a comprendre le fonctionnement du LOAD DATA INFILE.
Comment exclue t'on la 1ère ligne du fichier et comment détermine t'on quelle valeur d'une ligne on insert dans tel ou tel champ d'une table?
Merci
jeudi 28 janvier 2010 à 20:07:06 | Re : Envoyer un fichier CSV dans une base

kohntark

Membre Club

Comment exclue t'on la 1ère ligne du fichier et comment détermine t'on quelle valeur d'une ligne on insert dans tel ou tel champ d'une table?



Heu, en lisant la doc du lien proposé juste avant :


The IGNORE number LINES option can be used to ignore lines at the start of the file. For example, you can use IGNORE 1 LINES to skip over an initial header line containing column names: ...




You can also discard an input value by assigning it to a user variable and not assigning the variable to a table column:

LOAD DATA INFILE 'file.txt'
INTO TABLE t1
(column1, @dummy, column2, @dummy, column3);



Je ne saurai être plus clair que cette doc.
Maintenant, si tu rencontres des problèmes, fournis le code que tu as tenté et explique les soucis que tu rencontres.

Cordialement,

Kohntark -



Cette discussion est classée dans : fichier, donnees, insert, code, csv


Répondre à ce message

Sujets en rapport avec ce message

Fichiers CSV+Tableaux et Balaises en PHP !!! [ par spectroman ] Avis à ceux qui maitrise PHP !!!- Demande I :Les fichiers :* Un fichier genre "données1.php"Qui s'occupe de générer l'affichage d'un page de type HTML csv vers base de donnée [ par fraisa1985 ] Salut a tous, je veux faire une actualisation de ma base de donnée à partir d'une fichier csv. Ma probléme que le fichier csv contient des données pl générer un fichier xml [ par pandouta08 ] bonjour je voudrais savoir le code de génération d'un fichier xml à partir d'un code php sans utiliser une base de donnée .pouvez vous m'aidez s'il vo ajout de mots clés dans un fichier HTML [ par haninee ] slt à tous,je veux que vous m'aidez à resoudre mon probleme qu'est :dans un programme j'affiche tous les balises d'un fichier HTML qui contiennent pa Porblème simplexml_load_file et & [ par crow ] Bonjour à tous, Voici mon problème. Je dois traiter des fichiers xml en automatique pour inserer dans une base mysql. J'ai donc créée un script php p Optimisation [ par zut69 ] Bonjour,Mon projet de diplôme consiste à lire un fichier sur le disque dur du client, le crypter, l'envoyer au serveur et le décrypter en PHP.Je fais Type mime d'un fichier [ par mmaximum ] Salut à tous,J'aimerai savoir comment on fait pour trouver le type mime d'un fichier en php.Y a-t-il une fonction pour?? si oui laquelle.J'aimerai un insertion page php -> page html avec du code php [ par blitztrading ] Bonjour, Je crée un site pour lequel je fais les manip suivantes: fichier_A.php pour le cadre -> appel un fichier_B.html pour le contenu, qui inclut l importer un fichier csv de grand taille [ par rinuom99 ] Bonjour, je suis entrain d'essayer d'importer un fichier csv d'une taille 4M, mais j'ai pas réussi car la taille maximum du fichier ne doit pas dépass CSV à Mysql : probleme des accents sur les majuscules [ par kataVB ] boujour tout le mondeboujour tout le mondePour un site j'ai eu besoin de faire un petit script pour importer des fichies csv vers une table Mysql. <br


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales