Upload d'un fichier sql et le mettre ds la base [Résolu]

Signaler
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
-
Messages postés
149
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
13 décembre 2013
-
Salut à tous,

J'ai fais des recherches depuis cette aprem mais je ne trouve rien!!!!! je suis ss easyphp avec windows "vista évidemment pour arranger les choses" et j'ai un fichier *.sql sur un serveur ftp et je voudrais en PHP le rappatrier ds ma bdd en locale!!

Donc j'ai trouvé ca :
system("wget http://speed.travian.fr/map.sql -O tmp.sql");

mais ca marche sur un serveur FTP, mais quand j'essaye en locale, ca  ne marche pas, savez vous pk "surement parce que c une commande linux"??? et sinon si quelqu'1 à une autre solution pour moi, ca serait cool!!!!!

Merci d'avance

13 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
en php5, tu peux tenter copy directement.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
pour recuperer le contenu du fichier : file_get_contents
pour l'inserrer dans la db, c'est simplement une requete.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
set_time_limit(0);

clique sur reponse acceptee stp.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
salut

sous windows, ca ne peut pas fonctionner.

sinon, tu peux tenter d'utiliser la librairie CURL (ca permet de faire des requetes HTTP facilement)

exemple d'utilisation ici : http://www.phpcs.com/codes/PROXY-HTTP-SAUVEZ-VOS-VIDEOS-PREFEREES_47616.aspx
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
C bien ce que je pensais!!!! c une balise linux, merde, lolllllllll je ne connais pas du tout la librairie curl, c'est quand même bizarre qu'on puisse créer des fichiers .sql mais rien n'est prévu à l'aide d'un script php de rappatrier ca ds la base en une ligne de code, mdr!!!

je suis en train de tester à l'aide de fopen, penses tu que ce sit une bonne idée?? est ce fiable??
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
Ah oui copy, j'y avais pas pensé, je vais testé ca de suite ^^ mais qu'en ai t'il de l'insrtion ds la bdd??? je suis obligé de l'ouvrir ensuite avec fopen ou je peux faire autrement???

le fichier que je veux insérer c'est celui là :
http://speed.travian.fr/map.sql
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
C bon, j'ai réussi à le rappatrier à l'aide de copy, c'est déjà ca, mdr!!!!!! il me reste juste à le réinjecter ds la bdd, lollllll
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
Je connais pas cette balise, j'ai donc regarder sur php.net, et ca me donnerait ca, mais ca ne marche pas, hum, bizarre!!!

$mysqlhost = 'localhost';
$mysqluser = 'root';
$mysqlpass = '';
$mysqldb = 'travian';

$db = @mysql_connect($mysqlhost, $mysqluser, $mysqlpass) OR die('Can not connect to DB-Server!');
$db_select = @mysql_select_db($mysqldb) OR die('Can not select DB!');

$file = 'http://speed.travian.fr/map.sql';
$newfile = 'data/map.sql';

if (!copy($file, $newfile)) {
    echo "La copie du fichier $file n'a pas réussi...\n";
}else{
    echo "La copie du fichier $file a réussi...\n";
    $read_file_sql=file_get_contents($newfile);
    $result = mysql_query($read_file_sql);
    echo $result;
    unlink($newfile);
}
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
en fait, mysql_query n'effectue qu'une seule requete.

(tu peux faire un file_get_contents sur ton $file directement hein)

faut commencer par separer tes requetes avant de pouvoir faire ca.
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
Oui effectivement je viens de le voir à l'instant, mdr!!!!!! arf il faut parser les données!! je deteste ca!!, mdr, bon je vais essayer de me débrouiller, merci!!!!

je ne connaissais pas toutes les fonctions que tu m'as proposé :)
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
mince, j'ai réussi en partie, le seul truc, c un truc que je redoutais avec + de 60 000 entrées, ca me met Maximum execution time of 30 seconds, mdr!!!!!!!!!!

if (!copy($file, $newfile)) {
    echo "La copie du fichier $file n'a pas réussi...\n";
}else{
    echo "La copie du fichier $file a réussi...\n";
    $read_file_sql=file_get_contents($newfile);
    if($read_file_sql){
        $split_bdd=explode(';',$read_file_sql);
        for($i=0;$i<count($split_bdd);$i++){
            mysql_query($split_bdd[$i]);
        }
        /*$result = mysql_query($read_file_sql);
        echo $result;*/
        unlink($newfile);
    }
}
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
merci bcp!!!!!! je ne connaissais pas cette fonction non +!!!!!

merci, ca marche niquel, 70000 entrées ds la bdd, et ca pour sur 15 serveurs différents, ca va vraiment me simplifier la vie, mdr
Messages postés
149
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
13 décembre 2013

et tu voudrais pas nous mettre ton code ici?

stp