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

Linux Discussion :

Automatisation du remplissage d'une BD


Sujet :

Linux

  1. #1
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Automatisation du remplissage d'une BD
    Bonjour,
    Je travaille actuellement sous linux avec postgresql. J'ai créé une base de données assez complexe que je dois remplir par l'intermédiaire de fichiers. Chaque fichier correspond à une table et est au format .csv.

    ex:
    Nom fichier --> DT_PERSONNE.csv
    Nom table --> dt_personne

    Je dois donc, à partir du nom de fichier, obtenir le nom de la table (pas trop difficile, nom_fichier - .csv en minuscule), et je dois donc remplir les tables à l'aide d'une commande du style:

    copy nom_table from 'nom_fichier' delimiter ';' csv quote '"';

    Mon problème est que je dois faire cela pour une centaine de fichiers se trouvant dans le même répertoire, et je voudrais donc automatiser le procédé.
    Ma question est de savoir quel language vous me conseilleriez d'utiliser (préférence pour PERL ou UNIX si possible)?
    Mais aussi de savoir comment lire absolument tous les fichiers d'un même répertoire sans en oublier ou sans prendre 2 fois le même?

    Merci par avance pour votre soutien,

    Mathias

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    En perl ou en shell, en fonction de ce que tu connais le mieux.
    Pour le shell, un truc du genre:
    cd /repertoire/de/travail
    for nom_fichier in `ls -1 *csv`
    do
    echo "traitement du fichier $nom_fichier ..."
    nom_table=`basename $nom_fichier .csv | tr [A-Z] [a-z]`
    copy $nom_table from '$nom_fichier' delimiter ';' csv quote '"';
    echo "Traitement du fichier $nom_fichier OK"
    done
    Tu seras sûr qu'il aura tout traité. Je n'ai pas testé le script, mais ça devrait être OK.

  3. #3
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Automatisation Remplissage BD
    Merci pour ta réponse rapide, mais je rencontre maintenant un autre problème.
    La ligne de commande :

    copy $nom_table from '$nom_fichier' delimiter ';' csv quote '"';

    doit être exécuté une fois connecté à la base de données, donc ma question est la suivante:

    Vaut-il mieux lancer le script de la ligne de commande UNIX, c.a.d. ajouter :
    psql
    \c test
    sur 2 lignes en début de script, ou se connecter manuellement et executer un script dans psql?

    Dans le 2ème cas, sais-tu comment lancer un script dans psql?

    Mes questions viennent petit à petit mais je suis assez novice dans le développement sous UNIX et je découvre jour après jour de nouveaux trucs.

    Merci par avance,

    Mathias

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 54
    Points : 48
    Points
    48
    Par défaut Robot
    et bein la répense c l'utilisation d'un robot, il lit les fichier, se connecte sur une page html, contenant un formulaire, il le rempli, valide, et passe vers une autre page .php, qui recoit les valeurs des champs de la page précédente, (en utilisant http_post_vars), et puis ce script php de cette page se charge de la connexion, du remplissage de la base et c tout. je sais que c pas simple,mais c comme cela que g fait moi, pour une situation similaire.

    ______________________________________________________
    khaskhoussi wassim
    k.wassim2004@voila.fr

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    Je ne connais pas postgresql, mais sous SYBASE, ce que j'utilise souvent pour mes scripts, c'est un truc du genre:

    isql -e -Uusername -Ppassword <<EOF
    use NOM_BASE
    go
    ... commandes SQL ...
    go
    EOF
    Ce code est bien évidemment inclu dans le script SH. Il devrait y avoir moyen de faire pareil avec postgresql.

Discussions similaires

  1. [C#] Automatiser le remplissage d'une class
    Par jlmdev dans le forum C#
    Réponses: 8
    Dernier message: 03/11/2008, 15h25
  2. [PHP-JS] Automatiser le remplissage d'une zone texte
    Par khamett dans le forum Langage
    Réponses: 4
    Dernier message: 10/10/2007, 08h40
  3. select pour obtenir la taille de remplissage d'une bdd
    Par sqlakf76 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 15/07/2005, 13h44
  4. [JTable] Remplissage d'une JTable
    Par Ankya dans le forum Composants
    Réponses: 6
    Dernier message: 30/03/2005, 14h16
  5. Remplissage d'une zone d'un canvas
    Par ulysse66x dans le forum Composants VCL
    Réponses: 5
    Dernier message: 31/01/2004, 12h41

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