1

Sujet : import bdd

bonjour,
j'ai un bdd qui contient pas mal d'enregistrements (environ 35000 pour le moment).
en local aucun pb d'import, cela se fait en qq secondes.
mais sur cigales, malgre l'augmentation du max import a 40Mo, impossible d'importer cette bdd a part faire du copier coller avec sql.
j'ai essaye d'importer en sql, zip, gzip mais rien a faire. le fichier fait 1.8Mo en zip
toujours meme erreur internal error port 80.
est ce un pb de timeout?
est ce un pb de vitesse de connexion?
j'ai essaye avec un 2Ghz et bande 8Mo, ca passe pas, import de qq champs ou rien du tout.
histoire de voir, essaie avec un portable a 1ghz7 sur la meme ligne tel hier soir et la apres qq tentatives c'est enfin passe malgre un internal error.
j'ai meme cree un script pour faire drectement un insert into avec un ficher txt prepare a cet effet, mais toujours meme erreur.
on dirait qu'il prend cette requete comme une injection sql.
merci de m'eclairer

2

Re: import bdd

Bonjour,

Oui c'est embêtant ce genre de problèmes. La véritable limite se trouve dans le temps d'exécution de vos scripts PHP (et de celui de phpMyAdmin): 40 secondes. Généralement pour palier ces problèmes de timeout on coupe effectivement sa base en plusieurs parties plus petites.

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

3

Re: import bdd

merci de la reponse, mais j'avais essaye deja cette option.
meme avec 1000 enregistrements cela pose pb.
j'ai reussit comme je l'ais dit en le faisant avec un pc moins rapide et cela a fonctionne malgre une erreur a la fin.
j'ai essaye aussi en inserant un delayed dans l'export fait sur cigales et en reimportant le fichier et erreur a nouveau.
je penche a un pb niveau server (config ou materiel).
bonne journee

4 Dernière modification par NooD (29-01-2009 14:42:13)

Re: import bdd

Le serveur est mutualisé ce qui signifie que tu n'es pas le seul à accéder au serveur sql donc chaque tentative est différente de la précédente et comme il y a la limite d'exécution des applications php, il est tout à fait possible que tu n'arrives pas à insérer 1000 enregistrements (d'autant que ça dépend de la taille des enregistrements...).
Les tests en local ne sont pas du tout comparables même si ta machine est peu puissante. D'ailleurs en local tu as accès à mysql en ligne de commande ce qui facilite l'import de grosses base de données.
J'avais rencontré le même problème que toi à mon arrivée ici et il n'y a pas d'autres solutions que le découpage en petits enregistrements. Ensuite tu peux utiliser des applications php qui vont faire le sale boulot et importer chaque petit enregistrement sans dépasser la limite d'exécution. Je ne me rappelle plus des noms des applications php spécialement conçues pour faire ce travail mais en fouillant un peu sur google tu devrais trouver.

>> SubTherMiX <<
>> alternux <<

5

Re: import bdd

merci nood,
j'ai essaye avec dump qui fait ce boulot, mais idem.
avec le script que j'avais fait il ne devrait pas y avoir de pb, sauf s'il y a un pb de charge du server et qui le confond avec une injection sql.
pour mon fichier, les enregistrements ne sont pas enormes car ils comportent juste une id, un nom, un cp, une latitude et longitude, rien de bien mechant.

6

Re: import bdd

Tu peux essayer différents scripts (il y a pas mal de choix car c'est un problème courant). Je n'avais pas eu toujours les mêmes résultats (mais honnêtement je n'ai pas regardé le source donc je ne peux pas t'en dire plus).
Je ne sais pas à quoi ressemble ton script mais une méthode qui devrait fonctionner :
- 1 script php qui va sauvegarder X enregistrements dans un fichier. La taille du fichier doit être relativement petite et le nombre d'enregistrements petit également. Tu te retrouveras avec un bon nombre de fichiers.
- 1 script php qui va restaurer les fichiers dans la base de donnée. Pour éviter d'atteindre le délai maximal d'exécution, l'astuce est de recharger la page à la fin d'un traitement. De cette façon tu répartis les chargements et donc le délai d'exécution ne peut pas être atteint.
C'est peut être ce que tu as déjà fait. Il me semble que c'était le genre de solution que j'avais utilisé (sauf que dans mon cas les enregistrements étaient eux mêmes trop lourd donc la solution était un peu plus compliquée).
Bon courage.

>> SubTherMiX <<
>> alternux <<

7

Re: import bdd

en fait j'ai fait un script qui lit un fichier txt(modifie avec des | entre chaque champs et a la fin de chaque ligne)
si la colonne est vide, on fait insert into, sinon on continu de lire la ligne.
|id|nom|latitude|longitude|

c'est tout bete mais ca fonctionne meme pour les grosses bdd.
il faut juste creer le bdd avant.

sinon big-dump le fait aussi pour un export de bdd complet.
on met l'export sur le server avec big-dump configure(serversql,login,mdp,bdd) et on le lance.
il fait tout le boulot, mais ca depend des servers aussi.

8

Re: import bdd

ok mais si j'ai bien compris, le script lit un seul fichier texte et surtout il le lit en entier.
Donc ça ne résout pas le problème des gros import puisque le temps d'exécution du script va être supérieur au temps alloué par le serveur et dans ce cas là : oui ça dépend du serveur mais il ne faut pas rêver, sur un hébergement mutualisé, tu ne pourras jamais importer un fichier SQL d'une centaine de Mo en une seule fois.
Alors soit je n'ai pas compris ce que tu as dit, soit le script dont tu parles utilise une astuce pour passer au delà de la limitation du temps d'exécution wink
Enfin revenons en à ton problème, tu as essayé quelles applications php ? (avec un lien vers le site où tu les as trouvé vu que les Dump, bigdump sont légions sur internet).

>> SubTherMiX <<
>> alternux <<

9

Re: import bdd

je viens simplement de retrouver le lien.
http://www.ozerov.de/bigdump.php

10

Re: import bdd

C'est bien la méthode que je t'ai présenté sauf qu'il utilise un décalage dans le fichier au lieu de découper le fichier en plusieurs fichiers.
Avec ce script ça ne fonctionne pas ?

>> SubTherMiX <<
>> alternux <<

11

Re: import bdd

non, ca ne fonctionne pas.
meme en ne faisant qu'un fichier de 500ko.
pourtant il devrait le faire sans pb. enfin je pense.
sinon pour revenir a ma bdd, elle ne fait que 1.86Mo pour etre precis.
cela peut il venir du processeur du server ou de la memoire?
j'ai essaye sur d'autres server dedies et cela passe sans pb en faisant un import via phpmyadmin.
mais je prefere rester sur lescigales quand meme avec une equipe sympa.

12

Re: import bdd

Bonsoir,

Vous pourriez nous mettre votre fichier import SQL sur votre FTP ? Cela nous permettrait à terme de pouvoir procéder à des tests. Merci smile

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

13

Re: import bdd

500Ko ça ne passe pas ?
Ca m'étonne car vu la faible taille des tes enregistrements un fichier de 500Ko devrait même passer avec phpMyAdmin...
Tu as une erreur 500 avec le script big-dump ?

>> SubTherMiX <<
>> alternux <<

14

Re: import bdd

bonjour,
non pas d'erreur 500, mais internal error server port 80.

toad, mon server ftp perso est en route avec le fichier dessus.
je te fais parvenir les donnees.

bonne journee

15

Re: import bdd

Bonjour,

Internal Server Error = erreur 500 smile

Ok merci pour le fichier, je regarderais ca dès que je trouve le temps.

lesCigales.ORG sysadm1n
L'hébergeur qui sent bon la lavande - Un control panel qu'il est chouette - Viendez nous parler!
"All that is necessary for evil to triumph is for good men to do nothing."

Re: import bdd

bonjour,
j'essayes sur un autre compte cigales d'importer ma bdd qui fait 1.8Mo et en zip 473ko.
je decoche importation partielle aussi et toujours la meme erreur, meme en cochant importation partielle :
internal server error
the server encountered an internal error or misconfiguration
memcahced(toad) server at sql.lescigales.org port 80