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

PostgreSQL Discussion :

Import de fichier pour requête


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Import de fichier pour requête
    Bonjour à tous,
    Ayant trois espaces de stockage-sauvegarde,
    j'ai créer une table ayant 6 champ :
    id,md5sum,chemin,fichier,effacer,date

    Après avoir tous référencé les fichiers dans cette table : +de 950 mille fichiers
    j'ai lancé une requête me permettant de voir les doublons.et de les supprimer
    (et par la même, mettre le champ-effacer à "Oui" pour chaque doublons effacé).

    Par la suite , j'ai référencé , en ligne de commandes,
    les gros fichiers qui ne me servent plus
    (sauvegarde-ghost, sauvegarde-tar.gz, etc...)

    Ces derniers (que j'ai effacés) sont référencé (chemin-fichier)
    dans un fichier nommé : GrosFichierSurDDamovible.txt

    J'aimerais mettre le champ-effacer à Oui en faisant une requête..

    Mon idée serait :
    de prendre la première ligne du fichier GrosFichierSurDDamovible.txt
    de l'envoyer dans psql pour qu'il recherche la référence (dans le champ-chemin)
    et si trouvé alors mettre champ-effacer à Oui.

    Mais voilà, j'ai pas trouvé.

    Si vous avez des idées à me soumettre, svp !
    Voir même, plus d'explications !!
    Je vous remercie

    Trauq

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par trauqnej Voir le message
    de prendre la première ligne du fichier GrosFichierSurDDamovible.txt
    de l'envoyer dans psql pour qu'il recherche la référence (dans le champ-chemin)
    et si trouvé alors mettre champ-effacer à Oui.
    Dans quel contexte? Avec un langage de programmation? Un langage de script? Lequel?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Le mieux serait de rester dans psql, mais je pense que psql ne peut pas sélectionner les lignes d'un fichier.

    Alors en me tournant vers la ligne de commande (Bash) pour que chaque ligne traité devienne une variable traité dans psql.

    donc : en ligne de commande (script-shell) qui démarre psql avec variable du style :
    psql -c "update mabase set monchamp ='Oui' where chemin= '$variable' )
    modifier à chaque itération

    j'y suis presque !!! je pense trouvé d'ici la fin de la semaine.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    A partir du shell, le plus simple est d'importer le fichier dans une table temporaire et de le faire une seule requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    psql -d nombase -U nomuser <<EOF
    CREATE TEMP TABLE grosfichier(nom text);
    \copy grosfichier FROM 'fichier.txt' CSV
    UPDATE mabase set monchamp ='Oui' FROM grosfichier where chemin=nom;
    EOF

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 15
    Points
    15
    Par défaut j'ai trouvé cette solution aussi ...
    .. (tous les chemins mêne à postgres et au shell)

    donc, voici ma solution qui n'est pas forcément mieux que celle-ci dessus mais c'est celle que j'ai trouvé. Cadeaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat suppGrosFichierDDamo.txt | while read ligne ; 
    do psql -c "update fichiers set effacer = 'o' where chemin = '$ligne' "; 
    done;

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/02/2013, 09h57
  2. Réponses: 2
    Dernier message: 11/04/2007, 23h52
  3. Réponses: 2
    Dernier message: 12/07/2006, 16h41
  4. Pb pour importer un fichier texte
    Par sam01 dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/09/2005, 13h16
  5. .bat pour l'import de fichier txt dans postgres
    Par pseudomh dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/03/2005, 00h02

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