IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

automatiser l'insertion de données dans une bd


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 24
    Points : 29
    Points
    29
    Par défaut automatiser l'insertion de données dans une bd
    Bonjour a tous

    Voila en fait j'ai un programme qui tourne en local, celui ci permet d'enregistrer l'etat de fonction et la date ( separé par un " ; ")dans un fichier et ce ci a chaque changement d'etat du moteur.
    Toutes les 10 min par exemple ce meme programme upload le fichier vers un site internet.
    sur se site internet il y a une base de données
    comment faire pour inserrer tout ca dans la base de données automatiquement et ceci a chaque fois qu'il y a un nouvel envoi et des que l'operation est terminé suprimer le fichier du site internet et envoyer un message a l'ordinateur.

    Pour info le programme est ecrit en defphi, le site internet en php html et la base de données Mysql.

    Merci de votre aide

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je vois plusieurs étapes :
    • Lecture d'un fichier (est-ce le format csv ? => fonctions php ad-hoc)
    • Mise à jour de base de données


    Je te propose de travailler sur les deux étapes séparément. D'abord tu parse un pseudo-fichier représentatif pour afficher à l'écran les variable dont tu auras besoin par la suite. Un bon exercice, serait de l'écrire dans un tableau html....
    fonctions utiles : file, fgetcsv, fgets, ...

    Ensuite, une fois que tu maitrise la première étape, tu t'occupe de la suivante. Tu suit les tutoriels de mises à jour de bd mysql, et ca devrait être total bonheur pour toi...

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    hello,

    j'ai du faire un truc dans le genre (upload journalier d'un fichier de données xml à injecter dans la BD d'un site web). Mais je me suis vite rendu compte que c'était trop gourmand de traiter directement le xml (ben oui le fichier pesait +20 Mo) donc je transformait le fichier en csv avant de l'uploder.

    si tu fais un beau fichier cvs, pas besoin de te prendre la tête, injection direct dans la base de données avec la requête idoine (lancement d'un petit script php avec un zoli cron quotidine dans mon cas / toutes les 10 min pour toi),

    oublie pas de compresser les données avant l'upload... enfin c'est un conseil tu en fais ce que tu veux :


    // si tu upload un fichier compressé: ben commence par decompresser:
    function fdegzip($infile,$outfile){
    $res=false;
    if($fin = gzopen($infile, 'rb')){
    if($fout = fopen($outfile, 'wb')){
    $res=true;
    while (!gzeof($fin)) {
    $buffer = gzread($fin, 1024);
    if(false===fwrite($fout,$buffer))
    $res=false;
    }
    fclose($fout);
    }
    gzclose($fin);
    }
    return $res;
    }

    file_exists('/home/chemindufichier/'.$today.'.gz') or die('/home/chemindufichier/'.$today.'.gz introuvable !');

    fdegzip('/home/chemindufichier/'.$today.'.gz','/home/chemindufichier/'.$today.'.csv') or die('echec decompression');




    // Connexion et sélection de la base
    $link = mysql_connect("localhost", "username", "password")
    or die("MySQL: Connection failed");
    mysql_select_db("database") or die("Could not select database");

    // Exécuter requêtes SQL
    // à adapter à ton format csv
    // naturellement faut que la table et le csv se corresponde
    $query='LOAD DATA INFILE "/home/chemindufichier/'.$today.'.csv" INTO TABLE `tatable` FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY "\'"';

    $result = mysql_query($query) or die(mysql_errno($link) . ": " . mysql_error($link). "\n");

    // Fermeture de la connexion
    mysql_close($link);
    // et nettoyage des fichiers
    @unlink('/home/chemindufichier/'.$today.'.gz')
    @unlink('/home/chemindufichier/'.$today.'.csv')

    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insertion de donnée dans une table (2 bd)
    Par robert_trudel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/01/2007, 17h41
  2. Réponses: 5
    Dernier message: 26/01/2007, 08h11
  3. Insertion de données dans une DBGrid!
    Par scorpion37 dans le forum C++Builder
    Réponses: 12
    Dernier message: 09/06/2006, 07h54
  4. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17
  5. Réponses: 3
    Dernier message: 27/03/2006, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo