Tom's Guide > Forum > Programmation > Importer un fichier de 3mo dans ma bdd(sql, apache)

Importer un fichier de 3mo dans ma bdd(sql, apache)

Forum Programmation : Importer un fichier de 3mo dans ma bdd(sql, apache)

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour à tous
Je suis un peu newbie en sql aussi c'est la première fois que je suis confronté à ce problème.
J'ai un fichier sql de plus de 3mo qui est composé de dizaines de milliers de lignes de commandes sql:

INSERT INTO "matable" values (truc machin bidule chouette).


J'ai crée un table "matable"pour receptionner ce gros fichier. Mais voilà, pas moyen de transvaser ni par la fonction de phpmyadmin ni avec un petit code php utilisant explode() puis une boucle while sur le tableau crée.
La page web charge dans un premier temps puis affiche arret puis terminé. Faut il que je scinde le contenu du fichier en plusieurs plus petits fichiers (ce qui est fastidieux :sweat: ) ou existe t'il un autre moyen? :??:

le petit code pas si malin:

Code :
  1. <html>
  2.                 ...
  3.             <?php  $map="le gros fichier copié sur la page elle même et mise dans $map"
  4.                           $stock=explode('INSERT INTO',$map);
  5.               $link=mysql_connect('localhost','root','');
  6.               mysql_select_db('madb');
  7.               $i=0;
  8.               while($stock[$i]){
  9.               mysql_query('INSERT INTO '.$stock[$i]) or die mysql_error();
  10.               $i++;
  11.               }
  12.               mysql_close($link);
  13.               ?>
  14. </html>

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

dans php.ini (si tu es en local)

Maximum allowed size for uploaded files.
upload_max_filesize = 50M

Maximum size of POST data that PHP will accept.
post_max_size = 50M

comme ca, tu peut up jusqu'a un fichier de 50 Mo, cependant, faudra regler le max_execution_time plus haut, et met le max_execution_time a 90 (1min30) mais je ne sais plus si c'est dans le php.ini ou le httpd.conf d'apache.

si t'es chez un hébergeur, dis nous lequel, mais généralement, maintenant, ils autorisent (pour les pro) des up mini a 5mo voir 10mo.

------------------------------ La boutique Sexy : http://www.dream-shop.fr pour toutes vos envies à petits prix !
Webmaster, rentabilisez votre trafic : http://www.dream-shop.fr/affiliation 28% de commission !
Répondre à okinou

Ton fichier semble être un export mysql qui contient les requètes complètes. Tu as donc 2 solutions:
1) directement en ligne de commande:

Code :
  1. mysql -u root --password="" madb < fichier.sql



2) en php, en mettant le fichier sql sur le serveur:

Code :
  1. mysql_query("source /chemin/vers/ton/fichier.sql" );


------------------------------ Réseau IRC Francophone | g33k-zone
Défiez-moi donc !
Répondre à crazycat@idn

Arf j'ai lu vos deux post. J'ai trouvé tous les paramètres dans php.ini, je les ai changé. J'ai osé aussi celui là même si ça n'a rien donné de plus.

sort_buffer_size=5M (5M est la nouvelle valeur)




Dans mon fichier html avec le php dedans, j'ai mis un echo "j'aime les pommes", mais rien ne s'affiche sur firefox. pourtant d'autres page de ma créations s'affichent...
Voilà pour le passage par serveur.
Pour phpmyadmin, la taille d'importation de fichier est bien trop faible et je processus est bloqué par phpmyadmin. J'essaie de retrouver la commande sql pour la creation de la table et je vais mettre ca dans un fichier que vous pourrez voir.
J'ai déjà mis des données dans une table, pas de problème mais là je crois que c'est exclusivement lié à la taille du fichier.



Répondre à maxou22_33

ton fichier porte bien l'extension .php et non .html ?

------------------------------ La boutique Sexy : http://www.dream-shop.fr pour toutes vos envies à petits prix !
Webmaster, rentabilisez votre trafic : http://www.dream-shop.fr/affiliation 28% de commission !
Répondre à okinou

non j'ai mis le code php dans la page html.
D'ailleurs j'ai enfin trouvé un hebergeur de gros fichier.
Alors voila le fichier html avec tout ce que j'ai fait.
actualiserbdd.html

Répondre à maxou22_33

As-tu testé ce que je t'ai donné ?
Et si tu passes par du php, donne à ton fichier l'extension php, pas html.

------------------------------ Réseau IRC Francophone | g33k-zone
Défiez-moi donc !
Répondre à crazycat@idn

Ok j'ai suivi vos conseil de mettre le code dans un .php
Voi là ce qui m'en retourne:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 100 bytes) in C:\wamp\www\travian\actualiserbdd.php on line 35535

Je vous avais bien dit que c'est un gros fichier ^^.

Répondre à maxou22_33

Oui j'ai bien testé tes propositions. La deuxieme ne fonctionne pas car chaque instruction dans fichier.sql se termine pas ;
NB Ne tenez plus compte de l'ancien lien. Voici le nouveau
actualiserbdd.php

Répondre à maxou22_33

Bon j'ai utilisé la methode brutale qui consiste à envoyer dans la table par paquets de 5000 commandes en passant par l'onglet phpmyadmin.
merci quand même

Répondre à maxou22_33
Tom's Guide > Forum > Programmation > Importer un fichier de 3mo dans ma bdd(sql, apache)
Aller à :

Il y a 2661 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens