IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Installation MySQL Discussion :

probleme de taille d'import de fichier dans une bdd mysql


Sujet :

Installation MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Par défaut probleme de taille d'import de fichier dans une bdd mysql
    Bonjour!!

    J'aimerai savoir si quelqu'un a deja eu ce probleme (et si oui comment le resoudre...?)... Voila je dois importer à travers une interface php un fichier .txt qui fait au minimum plus de 200Mo et qui contient pres de 2 millions de lignes à inserer dans la table...

    Mon script php fonctionne car je les tester avec des extraits de lignes de ce fichier .txt il me les insere comme il faut pas de probleme... Mais lorsque je veux importer mon fichier .txt en entier, il n'en veut pas - enfin il ne me met pas de message d'erreur mais il importe rien non plus
    Et lorsque j'insere mon fichier directement sur ma bdd via phpmysadmin, il me met :

    Vous avez probablement tenté de télécharger un fichier trop volumineux. Veuillez vous référer à la documentation pour des façons de contourner cette limite.
    J'ai regarder la documentation, modifier 'upload_max_filesize', 'memory_limit' et 'post_max_size' dans php.ini, redemarrer mon serveur WAMP5...
    Mais rien de plus lorsque je refais la meme manip il me remet le meme message d'erreur...

    Je vous met mon code php d'import des fichiers .txt ainsi que mon fichier .sql où il y a mes creations de tables de la bdd...

    import.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    <?php
     
    switch($_POST['action']) {
      case "ajouter":  
      $serveur = "localhost";
      $user = "root";
      $pwd = "";
      $bdd = "testcartes";
     
    	mysql_connect($serveur, $user, $pwd) or die('Impossible de se connecter au serveur');
    	mysql_select_db($bdd) or die('Impossible de sélectionner la base de données');
     
    	$fichier=$_FILES['fichier']['name'];
    	move_uploaded_file($_FILES['fichier']['tmp_name'],"../cartes/test/".$fichier);
     
    	$fp = fopen('../cartes/test/'.$fichier,'r'); //lecture du fichier
    	while (!feof($fp)){ //on parcourt toutes les lignes
    		$ligne=fgets($fp); // lecture du contenu de la ligne
    		$sqltest="INSERT INTO test (numero,carte) values ('$numero','$ligne')";
    		$resql=mysql_query($sqltest);
    	};
     
    	$sql2=("select * from test");
    	$resql2=mysql_query($sql2);
     
    	if(mysql_error()){
    			print "Erreur dans la base de données : ".mysql_error();
    			print "<br>Importation stoppée.";
    			exit();
            } 
    		echo "<font face=\"verdana\" size=2><center><br align=center><br><br>Importation terminée, avec succès.	<br><br><br><br><br><br><br><br>
    			<a href = http://localhost/cartes/importTXTbdd.php align=center>Retour sur la page d'accueil d'import</a></center></font>"; 
     
    	while($ligne=mysql_fetch_array($resql2)){
    		$pac=substr($ligne['carte'],0,6);
    		$carte=substr($ligne['carte'],6,3);
    		$matricule=substr($ligne['carte'],9,8); 
    		$infos=substr($ligne['carte'],17,69);
    		$monetaire=substr($ligne['carte'],87,1);
    		$jjdateTraitement=substr($ligne['carte'],95,2);
    		$mmdateTraitement=substr($ligne['carte'],97,2);
    		$aaaadateTraitement=substr($ligne['carte'],99,4);
    		$jjdateSaisie=substr($ligne['carte'],104,2);
    		$mmdateSaisie=substr($ligne['carte'],106,2);
    		$aaaadateSaisie=substr($ligne['carte'],108,4);
    		$jjdateEffet=substr($ligne['carte'],118,2);
    		$mmdateEffet=substr($ligne['carte'],120,2);
    		$aaaadateEffet=substr($ligne['carte'],122,4);
    		$hhheureSaisie=substr($ligne['carte'],112,2);
    		$mnheureSaisie=substr($ligne['carte'],114,2);
    		$ssheureSaisie=substr($ligne['carte'],116,2);
    		$tt=substr($ligne['carte'],126,2);
     
    		$result=mysql_query("INSERT INTO carte (numero,pac,carte,matricule,infos,monetaire,jjdateTraitement,mmdateTraitement,aaaadateTraitement,jjdateSaisie,mmdateSaisie,aaaadateSaisie,jjdateEffet,mmdateEffet,aaaadateEffet,hhheureSaisie,mnheureSaisie,ssheureSaisie,tt) VALUES('$numero','$pac','$carte','$matricule','$infos','$monetaire','$jjdateTraitement','$mmdateTraitement','$aaaadateTraitement','$jjdateSaisie','$mmdateSaisie','$aaaadateSaisie','$jjdateEffet','$mmdateEffet','$aaaadateEffet','$hhheureSaisie','$mnheureSaisie','$ssheureSaisie','$tt')"); 
    		};
     
    	fclose($fp);
     
    	$req6="Truncate table test";
    	$resultat6 =  mysql_query($req6);
     
    	mysql_close();
    	break;
    	default: 
    ?>
     
    <html>
    <body>
    <font face="verdana">
    <form name='form' method='post' action='' enctype='multipart/form-data'>
        <table border='0' cellspacing='0' cellpadding='3' align="center">
        <tr>
        <td><font face="verdana" size=2><center>Fichier .txt à charger dans la base de donnée :</td> 
        <td> <input type="file" name="fichier"></center></font> </td> 
        </tr><br><br>
        <tr>
        <td></td>  
        <td> <input type="submit" name="submit" value="Charger"> </td> 
        </tr>
    	<tr><td>
        <input type="hidden" name="action" value="ajouter"> </td></tr>
     	<p></p><font face="verdana" size=2><center>
    	<a href = 'http://localhost/cartes/Accueil.php' align=center>Retour sur la page d'accueil</a> </center></font>  </table>
     
    </form> 
    </font>
    </body> 
    </html>
    <?php } ?>
    contact.sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    CREATE TABLE carte (
      numero int(100) NOT NULL auto_increment,
      pac varchar(10),   
      carte varchar(3),
      matricule varchar(8),
      infos varchar(40),
      monetaire varchar(1),
      jjdateTraitement varchar(2),
      mmdateTraitement varchar(2),
      aaaadateTraitement varchar(4),
      jjdateSaisie varchar(2),
      mmdateSaisie varchar(2),
      aaaadateSaisie varchar(4),
      jjdateEffet varchar(2),
      mmdateEffet varchar(2),
      aaaadateEffet varchar(4),
      hhheureSaisie varchar(2),
      mnheureSaisie varchar(2),
      ssheureSaisie varchar(2),
      orig varchar(1),
      TT varchar(2),
      PRIMARY KEY  (numero),
        KEY numero (numero))
      TYPE=MyISAM;
     
      CREATE TABLE test (
      numero int(100) NOT NULL auto_increment,
      carte varchar(130),
      PRIMARY KEY  (numero),
        KEY numero (numero))
      TYPE=MyISAM;
    Merci d'avance pour vos reponses

    Laeti

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Par défaut
    Salut,

    utilise bigdump tu peut le prendre ici ==>http://www.ozerov.de/pphlogger/dlcou...de/bigdump.zip

    c'est un script tout pret

    @@++

    Hay

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Par défaut
    Bonjour!!

    J'ai testé le script qu'il y a sur le lien, et apres avoir fait les modifications necessaire concernant la bdd, je lance le script, et il me met comme erreur :

    You may only upload .sql .gz or .csv files.
    Et mon fichier est un .txt (je ne peux pas le passer en .csv par ex car impossible de l'ouvrir avec excel - pas assez de mémoire sur le poste sur lequel je travaille )

    Donc je suis à nouveau bloqué, je ne sais pas comment faire pour modifier ces limites et donc importer mon (tres gros) fichier .txt

    Merci de votre aide

    Laeti

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Par défaut
    Salut,

    si tu a un acces ssh je te conseille de l'utiliser avec la commande elle te permetra d'importer ton backup dans ta base de donné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -h host -u user -ppass base_de_donnees < fichier_dump
    si tu na pas acces ssh, tu copie colle ton backup dans un autre endroit et tu

    modifie son extension en .sql et ensuite tu peut le remetre a son

    emplacement et utiliser big dump

    Bonne Chance

    @@++

    Hay

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Par défaut
    Bonjour!

    J'ai essayé en faisant les modifs mais ca fonctionne toujour pas, il me met maintenant comme erreur :

    At this place the current query includes more than 300 dump lines. That can happen if your dump file was created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains extended inserts. Please read the BigDump FAQs for more infos.
    Je (re)precise que mon fichier .txt (passé en .sql) fais pres de 2 millions de lignes à inserer...

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 390
    Par défaut
    salut

    désolé de te contredire Hay26 mais
    ceci
    mysql -h host -u user -ppass base_de_donnees < fichier_dump
    ne risque pas de marcher. Cette commande attends un fichier de requete.

    Pour votre problème laetiheu, je vous conseille de splitter le fichier par 100000 lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    split -l 100000 nom_fichier_txt
    . sous linux je précise
    cela va générer 20 fichiers bien distinct plus facile à l'importation.

    puis ensuite de tester la commande load data.

    Pourriez-vous donner un exemple de ligne contenu dans le fichier.

Discussions similaires

  1. Importer un fichier CSV en arabe dans une BDD mysql
    Par oum87 dans le forum Administration
    Réponses: 3
    Dernier message: 21/09/2012, 17h17
  2. Importer un fichier dans une table
    Par tnarol dans le forum Débuter
    Réponses: 2
    Dernier message: 21/05/2009, 13h01
  3. Import d'un fichier dans une table MySql
    Par jep33 dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2008, 16h27
  4. Réponses: 9
    Dernier message: 22/06/2007, 08h36
  5. importé un fichier dans une table
    Par joe370 dans le forum Modélisation
    Réponses: 3
    Dernier message: 05/06/2007, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo