Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation

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

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.

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:
  1. mysql -u root --password="" madb < fichier.sql


2) en php, en mettant le fichier sql sur le serveur:
  1. mysql_query("source /chemin/vers/ton/fichier.sql");

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.



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 ^^.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde