Inserer un repertoire de fichier txt dans une base de donnée mysql

Résolu
macougueye Messages postés 10 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 20 avril 2012 - 24 févr. 2012 à 11:28
macougueye Messages postés 10 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

6 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
26 févr. 2012 à 22:57
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.
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
24 févr. 2012 à 22:56
Salut,

Fais donc une archive.
0
macougueye Messages postés 10 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 20 avril 2012
25 févr. 2012 à 21:28
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
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
25 févr. 2012 à 21:40
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
macougueye Messages postés 10 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 20 avril 2012
25 févr. 2012 à 22:21
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
0
macougueye Messages postés 10 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 20 avril 2012
27 févr. 2012 à 08:54
OK MERCI ça marche bien

Ensemble pour developper de monde informatique
En particulier l afrique mon beau continent
0
Rejoignez-nous