traiter des fichiers de 40 Mo !! [PHP] - PHP - Programmation
Marsh Posté le 24-11-2003 à 13:25:33
t'as une guillement qui traine:
kayasax a écrit : ... |
Marsh Posté le 24-11-2003 à 13:53:38
wai en fait ta recuperer la base de quelque part et tu cherche a l'uploader autre part. c'est ca?
On pourrait se dire que la syntax est parfaite mais dans l'enregistrement du .sql j'avais des erreur comme la tienne.
A ce demander comment ca peu arriver
Marsh Posté le 24-11-2003 à 13:56:44
chacal_one333 a écrit : On pourrait se dire que la syntax est parfaite mais dans l'enregistrement du .sql j'avais des erreur comme la tienne. |
J'ai déjà eu le même tour..PHPMyAdmin de merde ? MySQL de merde ? (Enfin, pour le dernier j'vois pas pkoi j'ai mis un ? )
Marsh Posté le 24-11-2003 à 14:05:51
Pour vérifier que le problème ne vient pas de certaines lignes de log qui contiennent des valeurs rendant la requête MySQL incorrecte, arrange toi pour logguer en cas d'erreur de la requête la ligne de log incriminée et la requête correspondante.
Ignore l'erreur et passe à la ligne de log suivante, ça te donnera toutes les lignes "foireuses" du log analysé et te permettra sans doute d'y voir plus clair.
Marsh Posté le 24-11-2003 à 14:11:06
Merci de m'avoir lu ...
JagStang a écrit : pour info : %20 c'est un espace |
oui merci je suis pas completement debile ...
Anapajari : "t'as une guillement qui traine": Ce n'est pas moi qui ai ecrit cette requete je ne sais pas d'ou elle sort ...
"wai en fait ta recuperer la base de quelque part et tu cherche a l'uploader autre part. c'est ca? " pas du tout comme dis plus haut je parcours un fichier et insere certains element dans une bdd.
le code :
|
La structure de la table :
Champ Type Null Défaut
id int(10) Non
date date Non 0000-00-00
ip varchar(15) Non
user varchar(100) Non
heure time Non 00:00:00
moout float Non 0
moin float Non 0
proto varchar(10) Non
uri varchar(250) Non
Marsh Posté le 24-11-2003 à 14:36:14
utilise plutôt un bulk insert (plusieurs lignes à la fois) ça sera vachement moins lourd pour le serveur
INSERT INTO matable VALUES ('ligne1'),('ligne2'),('ligne3')
et tu fais une insertion par paquet de 1000 par exemple
Marsh Posté le 24-11-2003 à 14:36:51
KrisCool a écrit : Pour vérifier que le problème ne vient pas de certaines lignes de log qui contiennent des valeurs rendant la requête MySQL incorrecte, arrange toi pour logguer en cas d'erreur de la requête la ligne de log incriminée et la requête correspondante. |
Merci c'est bien certaines lignes qui posent pb, peut etre mon champs uri n'est pas assez long, je le modifie et resteste...
Marsh Posté le 24-11-2003 à 14:42:28
mais non dans certains champs tu dois avoir un guillemet... Et comme tu fais aucun traitement dessus bin ça pète.
Commence par faire un addslashes( http://dev.nexen.net/docs/php/anno [...] n=addslash ) sur tous les champs varchar
Ensuite vérifier la longueur des champs que tu inseres est également une bonne idée
[edit: je sais pas pourquoi j'ecris guillement en ce moment au lieu de guillemet]
Marsh Posté le 24-11-2003 à 14:49:15
ok merci c'est juste ce à quoi je venais de penser (suis je bete !) ca a l'air de tourner now
Marsh Posté le 24-11-2003 à 15:27:18
finalement ca va relativement vite pour inserer env. 142000 lignes
Marsh Posté le 24-11-2003 à 13:07:43
j'essaie de faire un script d'analyse des fichiers logs du proxy (parcours du fichier ligne par ligne et insertion des champs qui m'interessent dans la db), mais problème les fichiers font en moyenne 40 megas
j'arrive à inserrer env. 24000 enregistrements dans ma table puis tt à coup j'ai cette erreur :
"You have an error in your SQL syntax near '%20ord2%20+%20'?')' at line 1" or c'est la meme requete qui est executee tt le temps et les 24000 1eres fois elle est executee sans problèmes...
$sql="insert into proxy values ('','$date','$info[0]','$user','$info[5]','$moout','$moin','$info[15]','$info[18]')";
mysql_query($sql) or die(mysql_error());
quelqun a une technique pour traiter de tels fichiers ??
Merci.