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
) ou existe t'il un autre moyen?
le petit code pas si malin:
Code :
|
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:
Code :
|
2) en php, en mettant le fichier sql sur le serveur:
Code :
|
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.
ton fichier porte bien l'extension .php et non .html ?
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
As-tu testé ce que je t'ai donné ?
Et si tu passes par du php, donne à ton fichier l'extension php, pas html.
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 ^^.
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
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
Il y a 2661 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
Par allstar27 il y a 3 jours :
Bonjour, Il suffit d'insérer une table point dans ta base de données, lorsque l'utilisateur par le biais d'une $_SESSION['id'] aucmente ses points, tu update cette table. Ensuite pour débloquer se que tu souhaites, tu fais une petite condition: Code :<?phpif ($_SESSION['point'] < 5) {echo "pas assez de points";} else {echo "assez de points";}?>
allstar27 - Expert bronze
Spécialité(s) : Programmation, Hardware, Logiciels
8728 messages depuis le 21/04/2006
