[mysql] No SQL query!

No SQL query! [mysql] - PHP - Programmation

Marsh Posté le 13-03-2004 à 19:39:26    

hello,
 
J'essay d'importer un fichier .sql avec phpmyadmin mais ca marche pas. Le fichier est correct, mais quand je lui dit de l'importer phpmyadmin m'ecrit "No SQL query!". Alors que c'est faux le fichier fait plus de 2mb !
J'ai cherché sur le net et j'ai trouvé plein de pages ou les gens explique qu'ils ont se meme probleme par contre il n'y a jamais de solution...
 
(je sais que c'est limite pour cette cat, mais bon)

Reply

Marsh Posté le 13-03-2004 à 19:39:26   

Reply

Marsh Posté le 13-03-2004 à 19:43:09    

HUm, t'as essayé en ne copiant que des parties du fichier ?

Reply

Marsh Posté le 13-03-2004 à 19:49:57    

oui j'ai deja fait ca une fois (ca m'a pris 30min...) et ca a marché

Reply

Marsh Posté le 14-03-2004 à 00:59:00    

Big-Foot a écrit :

Le fichier est correct, mais quand je lui dit de l'importer phpmyadmin m'ecrit "No SQL query!". Alors que c'est faux le fichier fait plus de 2mb !

euh le fait que le fichier fasse 2mb n'implique pas qu'il contienne des requetes sql [:itm]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 14-03-2004 à 03:29:35    

oh.. ok c'est vrai mais il en contient :)  
"CREATE DATABASE...."

Reply

Marsh Posté le 14-03-2004 à 15:42:48    

alors vous avez pas une petite idée ? j'ai recherché sur le net mais à chaque fois que qq'un a ce probleme il ne trouve pas la solution :(

Reply

Marsh Posté le 14-03-2004 à 15:46:30    

bah essaie de découper ton fichier en plusieurs morceaux pour essayer de trouver d'ou vient l'erreur.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 14-03-2004 à 16:29:21    

ce fichier a été generer avec phpmyadmin donc il devrais pas y avoir d'erreur nan ? J'ai ce probleme avec tout mes fichier .sql. Ca marche pas si je selectionne le fichier, par contre si je fait un copier/coller directement dans le forumlaire de phpmyadmin ca marche o_O (dans ce cas precis je ne peut pas faire de copier/coller vu la taille)

Reply

Marsh Posté le 15-03-2004 à 22:41:50    

up

Reply

Marsh Posté le 16-03-2004 à 11:32:45    

Si tu veux j'ai fais un script qui execute un fichier txt contenant du sql requete par requete, faudra jsute que tu change le max_execution_time ou un truc comme ca pour pas que le script s'arrete apres 30 seconde :/
attend je le recherche..


---------------
Recherche de partenaires pvp dans World of Warcraft :: http://www.wowteamfinder.com
Reply

Marsh Posté le 16-03-2004 à 11:32:45   

Reply

Marsh Posté le 16-03-2004 à 11:36:20    

C'est bourin comme script, mais ca marche.
 
J'mettais d'abord tout en memoire pour un prob techique dont je n'ai plus souvenance ;)
 
Enfin y a moye nde l'ameliorer très certainement.
 
A+
 

Code :
  1. <?php
  2. $filename = "sql.sql";
  3. $fp=fopen($filename, "r" );
  4. stream_set_blocking($fp,  0);
  5. //Mise en memoire des données à inserer
  6. echo 'Mise en mémoire des requetes : <br><br>';
  7. while(!feof($fp)) {
  8. $str_req .= fgets($fp, 16384);
  9. if(substr($str_req, strlen($str_req)-3, 1)==";" ) {
  10.  $memreq++;
  11.  $tab_req[count($tab_req)]=$str_req;
  12.  $str_req='';
  13.  if($memreq % 100 == 0 && $memreq!=0) {
  14.   echo "- ".$memreq." requêtes mises en memoire...<br>";
  15.   flush();
  16.   ob_flush();
  17.  }
  18. }
  19. }
  20. fclose($fp);
  21. //Enregistrement des données dans la db
  22. echo 'Execution des requetes : <br><br>';
  23. for($i=0; $i<count($tab_req); $i++) {
  24. if(mysql_query($tab_req[$i])) {
  25.  $cptreq++;
  26. }
  27. else {
  28.  $prob_req .= '- '.$str_req.'<br>';
  29. }
  30. if($cptreq % 100 == 0 && $cptreq!=0) {
  31.  echo "- ".$cptreq." requêtes éxécutées...<br>";
  32.  flush();
  33.  ob_flush();
  34. }
  35. }
  36. $tot_error = $memreq - $cptreq;
  37. echo '<br>----------------------------<br><br>';
  38. echo '<b>'.$cptreq.'</b> requêtes ont été éxécutées sur un total de <b>'.$cptread.' requêtes.</b><br>';
  39. echo 'Nombre d\'erreurs : <b>'.$tot_error.'</b>';
  40. echo '<br><br>Liste des reqûetes qui n\'ont pas pu etre executées : <br><br>'.$prob_req;
  41. ?>


 
Pas oublier de se conencter a la DB avant hein


Message édité par Gat$ le 16-03-2004 à 11:38:04

---------------
Recherche de partenaires pvp dans World of Warcraft :: http://www.wowteamfinder.com
Reply

Marsh Posté le 17-03-2004 à 13:51:33    

tip top comme script ca :p
merci

Reply

Marsh Posté le 17-03-2004 à 13:55:54    

Ouais je pense que c le max execution time qui te fait chier.
Il faut decouper tes scripts
Un scripts pour les creations
Et plusieurs scripts pour les insertions
 
Le mieux est d'avoir un acces autre à mysql que phpmyadmin
Par exemple si tu peux etablir une connexion sur le serveur mysql (port 3306 par defaut)
Avec une machine ayant mysql-client, il te suffit de taper
mysql -h hote -u user -p database <ton_script.sql
Et la tu es sur de pas avoir de soucis

Reply

Marsh Posté le 17-03-2004 à 20:34:06    

oki merci de vos reponses, gat$ je vais voir ton script si le reste  ne fonctionne pas ;)
Sebastien ton mysql-client c'est un truc web comme phpmysql non ? ca me donne une idée : est ce qu'il exise pas des soft (pas web) qui accederais à la bdd et pourrais y faire des query ?

Reply

Marsh Posté le 17-03-2004 à 20:41:22    

ah au fait je vien de remarquer que ce que j'avais telecharger ce n'est pas "mysql-client" mais un mysql-client parmis tant d'autes :D

Reply

Marsh Posté le 17-03-2004 à 21:15:09    

Big-Foot a écrit :

est ce qu'il exise pas des soft (pas web) qui accederais à la bdd et pourrais y faire des query ?


 
Oui. Il y a (eu) MySql Front (mais son dev a été stoppé je crois) et il y a MySqlCC

Reply

Marsh Posté le 17-03-2004 à 23:07:44    

oki merci j'ai installé MySqlCC, par contre il a planté quand j'ai executé une grosse query, je vais réessayer ce weekend :)


Message édité par Big-Foot le 17-03-2004 à 23:08:04
Reply

Marsh Posté le 18-03-2004 à 11:07:20    

non quand je dis mysql-client c juste le truc en ligne de commande quand tu installes mysql :-)
Je dis mysql-client pour differencier avec mysql-server

Reply

Marsh Posté le 23-03-2004 à 21:33:36    

MySqlCC plante lors de grandes requettes...
Par contre ton script gat$ à l'aire de bien fonctionner jusqu'à là ;) il dépasse donc mysql et mysqlCC :D

Reply

Marsh Posté le 18-04-2004 à 17:39:49    

salut à tous :D
 
Bah j'avoue avoir fait ce script justement parce que MysqlCC faisait chier avec les grosses requêtes ou les gros fichiers .sql :/
 
rien de tel que de traiter le tout requetes par requetes, meme si ca prend plus de temps on s'en fou c'est pas nous qui bossons c'est notre gentille petite bestiole :D
 
Perso je ne comprend pas pourquoi mysqlcc n'offre pas la possibilité de s'y prendre comme je m'y prend c'est pourtant très simple. [:spamafote]
 
Content d'avoir rendi service :)  
A+


---------------
Recherche de partenaires pvp dans World of Warcraft :: http://www.wowteamfinder.com
Reply

Marsh Posté le 20-04-2004 à 14:01:14    

Salut,
 
J'ai également connu des problèmes avec les fichiers SQL de phpmyadmin.
Je suis passé par les fichiers CSV et voici le script que j'avais fait. (44000 lignes à charger dans la table, 2150 Ko) Cela a pris moins de 2 secondes)
 
en faisant une requête google sur ip-to-contry, vous devriez trouver facilement le fichier pour voir sa structure si vous voulez.
 

Code :
  1. require ("../connect_bdd.php" );
  2. $link = connect_bdd();
  3. $requete_creation_base = "
  4. CREATE TABLE liste_ip_pays (
  5. id INT(11) NOT NULL AUTO_INCREMENT,
  6. ip_start DOUBLE NOT NULL DEFAULT '0',
  7. ip_end DOUBLE NOT NULL DEFAULT '0',
  8. code_pays_2 CHAR(2) NOT NULL DEFAULT '',
  9. code_pays_3 CHAR(3) NOT NULL DEFAULT '',
  10. nom_pays VARCHAR(50) NOT NULL DEFAULT '',
  11. PRIMARY KEY (id)
  12. )";
  13. $requete_remplissage_table = "LOAD DATA LOCAL INFILE 'ip-to-country.csv' INTO TABLE `liste_ip_pays`
  14.    FIELDS TERMINATED BY ','
  15.    ENCLOSED BY '\"'
  16.    LINES TERMINATED BY '\r\n'
  17.    (`ip_start`, `ip_end`, `code_pays_2`, `code_pays_3`, `nom_pays`)";
  18. if (mysql_query ("DROP TABLE IF EXISTS `liste_ip_pays`;", $link)) echo "table effacée // ";
  19. if (mysql_query ($requete_creation_base, $link)) echo "table crée // ";
  20. mysql_query ($requete_remplissage_table, $link) or die ("erreur de chargement : " . mysql_error());
  21. echo "table remplie";
  22. mysql_close($link);


 
 
PS : le fichier CSV a été mis sur le serveur par FTP
 
a+


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed