Inserer un repertoire de fichier txt dans une base de donnée mysql [Résolu]

Messages postés
11
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
20 avril 2012
- - Dernière réponse : macougueye
Messages postés
11
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
20 avril 2012
- 27 févr. 2012 à 08:54
Salut
Je travaille sur un projet de recueils de donnée et exploitation de ses dernier. et y'a un serveur qui génère plusieurs fichiers et j'arrive a charger le fichier dans la base mais un a un et ma question est que.
1. est ce que c possible de charger tous le répertoire d'un seul coup?
2. si je peut avoir un script qui me permet d'aller charger l’ensemble des fichier du répertoire chaque fin de journée?
merci et à bientôt
Ensemble pour developper de monde informatique
En particulier l afrique mon beau continent
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
3
Merci
Ce que je vois de plus probable pour expliquer le fait que ça foire est que ta requête est différente : tu as ajouté "LINES TERMINATED BY ''". Vérifie aussi le nom du dossier.

Sinon j'en ai profité pour réviser un peu ton script (nota : il faudrait encore le modifier pour utiliser PDO ou autre à la place de mysql_*) :
<?php

$db_lnk = mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('cdr', $db_lnk) or die(mysql_error());

$dir = './';

$lst = scandir($dir);
if ($lst !== false)
  {
    foreach ($lst as $file)
      {
$path = rtrim($dir, '/') . '/' . $file;
if ($file[0] != '.' && is_file($path))
  {
    $path = mysql_real_escape_string($path, $db_lnk);
    $query = "LOAD DATA LOCAL INFILE '$path' INTO TABLE cdr.mobilecharching FIELDS TERMINATED BY ';' IGNORE 1 LINES";
    $req = mysql_query($query, $db_lnk);
    if ($req === false)
      die(mysql_error());
  }
      }
  }

mysql_close($db_lnk);

?>


si tu pe me donnée ton email personnel sa sera mieux

Non.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de TychoBrahe
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
0
Merci
Salut,

Fais donc une archive.
Commenter la réponse de TychoBrahe
Messages postés
11
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
20 avril 2012
0
Merci
wi je vois mais enfait les donnée sont bien archivé mais moi je veux les mettre dans une bd et creer une interface requete pour pouvoir les exploités. et la j arrive a charger fichier par fichier et ma question est que
si je pe avoir un script ki permet de charger tout un repertoire de fichier de meme structure dans une bd.
pour un seul fichier j'utilise LOAD DATA INFINE


Ensemble pour developper de monde informatique
En particulier l afrique mon beau continent
Commenter la réponse de macougueye
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
0
Merci
Salut,

J'avais mal compris ta question à la base, maintenant ça m'a l'air plus clair.

1. est ce que c possible de charger tous le répertoire d'un seul coup?

Il te suffis d'itérer pour chaque fichier.

2. si je peut avoir un script qui me permet d'aller charger l’ensemble des fichier du répertoire chaque fin de journée?

Ajoute une tache cron sur le script que tu as fait pour répondre à la question 1. et c'est bon.
Commenter la réponse de TychoBrahe
Messages postés
11
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
20 avril 2012
0
Merci
ok et d'avoir compris ce que je veux.
en fait j ai faits pr un fichier et sa marche bien mais kan je fait un boucle pr parcourir le repertoire la sa decone et j arrive pas a m'en sortir
voici l'script pr charger un ficher et sa marche bien
<?php
//connecter au serveur
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
//selectionner la base
mysql_select_db('cdr',$connect) or die ("erreur de connexion base");
//recuperer les information dans un fichier et les charger dans la base cdr
$result =" LOAD DATA LOCAL INFILE 'D:/10-08-2011_ 0/Volubill_Sonatel_MobileCharging_csv458180.txt' INTO TABLE cdr.mobilecharching FIELDS TERMINATED BY ';' IGNORE 1 LINES ";
$req=mysql_query($result)or die (mysql_error());
echo "l'eregistrement est reussi";
echo "
";
mysql_close($connect);

?>


et l'autre script pr le repertoire mais sa ne marche pas pr moi

<?php
//connecter au serveur
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
//selectionner la base
mysql_select_db('cdr',$connect) or die ("erreur de connexion base");
//ouvrir le repertoire des fichiers
$dir = opendir('D:/10-08-2011_ 0/charger');
//parcourir le repertoir pour trouver le nom de chaque fichier
while ($file = readdir($dir)){
//la varaible $chemin recupere le chemein absolue pour chaque fichier
$chemin= 'D:/10-08-2011_ 0/charger/'.$file;
if($file != "." && $file != ".."){
//charger chaque fichier dans la base de données
$result =" LOAD DATA LOCAL INFILE '$chemin' INTO TABLE cdr.mobilecharching FIELDS TERMINATED BY ';' LINES TERMINATED BY '' IGNORE 1 LINES ";
$req=mysql_query($result)or die (mysql_error());
echo $chemin ;
echo "
";
}
}
// fermer le repertoire
closedir($dir);

echo "l'eregistrement est reussi";
mysql_close($connect);
?>
si tu pe me donnée ton email personnel sa sera mieux
le mien c gueyewaloo@hotmail.com
Ensemble pour developper de monde informatique
En particulier l afrique mon beau continent
Commenter la réponse de macougueye
Messages postés
11
Date d'inscription
lundi 29 octobre 2007
Statut
Membre
Dernière intervention
20 avril 2012
0
Merci
OK MERCI ça marche bien

Ensemble pour developper de monde informatique
En particulier l afrique mon beau continent
Commenter la réponse de macougueye