Upload d'un fichier sql et le mettre ds la base

Résolu
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010 - 9 déc. 2008 à 23:11
knostra Messages postés 149 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 13 décembre 2013 - 3 avril 2009 à 17:58
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

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

clique sur reponse acceptee stp.
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
10 déc. 2008 à 09:06
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
10 déc. 2008 à 19:56
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??
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
10 déc. 2008 à 20:06
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
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
10 déc. 2008 à 20:10
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
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
10 déc. 2008 à 20:28
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);
}
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
10 déc. 2008 à 20:33
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.
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
10 déc. 2008 à 20:37
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é :)
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
10 déc. 2008 à 20:45
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);
    }
}
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
10 déc. 2008 à 20:55
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
0
knostra Messages postés 149 Date d'inscription jeudi 12 avril 2007 Statut Membre Dernière intervention 13 décembre 2013
3 avril 2009 à 17:58
et tu voudrais pas nous mettre ton code ici?

stp
0
Rejoignez-nous