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

Requêtes PostgreSQL Discussion :

automatiser l'import d'un fichier


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut automatiser l'import d'un fichier
    Bonjour à tous,

    Voici mon problème, je souhaiterais automatiser l'import d'un fichier txt.
    Je le fais moi-même manuellement sauf que je voudrais créer un script en bash pour automatiser cette commande :

    bien sur avant il faut se connecter à postgres et indiquer le nom de la base.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COPY test(version_agent , nb_poste) FROM 'fichiertxt' DELIMITER ';';
    Est-ce-que quelqu'un pourrais m'aider ?

    cdt,

  2. #2
    Membre Expert
    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
    Par défaut
    Très simple avec psql. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/sh
     
    psql -d base -U postgres <<EOF
    COPY test(version_agent , nb_poste) FROM 'fichiertxt' DELIMITER ';';
    EOF

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut
    Citation Envoyé par estofilo Voir le message
    Très simple avec psql. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/sh
     
    psql -d base -U postgres <<EOF
    COPY test(version_agent , nb_poste) FROM 'fichiertxt' DELIMITER ';';
    EOF
    j'ai crée un autre utilisateur et j'ai l'utilisateur par default postgres.

    psql: FATAL: authentification Ident échouée pour l'utilisateur « postgres »

    peux-tu me dire pourquoi j'ai cette erreur ?

    Cordialement,

  4. #4
    Membre Expert
    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
    Par défaut
    Parce que tu dois probablement avoir dans le fichier pg_hba.conf cette ligne au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Database administrative login by UNIX sockets
    local   all         postgres                          ident sameuser
    qui est la configuration par défaut de certaines installations, debian par exemple.

    Cette ligne indique que pour se logger sans mot de passe à l'utilisateur de BDD postgres, il faut être l'utilisateur Unix postgres.

    Si tu souhaites au contraire que n'importe quel utilisateur local au système puisse se connecter en postgres librement, tu peux remplacer ident sameuser par trust et recharger (pg_ctl reload ou kill -HUP du postmaster)

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut
    Citation Envoyé par estofilo Voir le message
    Parce que tu dois probablement avoir dans le fichier pg_hba.conf cette ligne au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Database administrative login by UNIX sockets
    local   all         postgres                          ident sameuser
    qui est la configuration par défaut de certaines installations, debian par exemple.

    Cette ligne indique que pour se logger sans mot de passe à l'utilisateur de BDD postgres, il faut être l'utilisateur Unix postgres.

    Si tu souhaites au contraire que n'importe quel utilisateur local au système puisse se connecter en postgres librement, tu peux remplacer ident sameuser par trust et recharger (pg_ctl reload ou kill -HUP du postmaster)
    ok sauf que j'ai créais un utilisateur avec un mot de passe c'est quand même plus secure.

    c'est comme cela que je dois l'utiliser ?

    psql -d base -U user password <<EOF

  6. #6
    Membre Expert
    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
    Par défaut
    Si tu veux être secure, il faut savoir que donner un mot de passe en ligne de commande ne l'est pas du tout puisque n'importe qui peut le voir avec la commande ps.
    En usage interactif le mot de passe est demandé en saisie.
    En usage non interactif la solution recommandée est d'utiliser un fichier privé .pgpass, voir la doc pour le format.

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut
    Citation Envoyé par estofilo Voir le message
    Parce que tu dois probablement avoir dans le fichier pg_hba.conf cette ligne au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Database administrative login by UNIX sockets
    local   all         postgres                          ident sameuser
    qui est la configuration par défaut de certaines installations, debian par exemple.

    Cette ligne indique que pour se logger sans mot de passe à l'utilisateur de BDD postgres, il faut être l'utilisateur Unix postgres.

    Si tu souhaites au contraire que n'importe quel utilisateur local au système puisse se connecter en postgres librement, tu peux remplacer ident sameuser par trust et recharger (pg_ctl reload ou kill -HUP du postmaster)
    Salut,

    J'ai vraiment besoin de ton aide, j'ai indiqué dans mon fichier pg_hda.conf.sample

    J'ai pas le fichier pg_hda.conf ... ? comment ça se fait ?

    De plus j'ai ajouté ce que tu m'as dis, j'ai redémarré et j'ai toujours le même problème.

    J'utilise l'utilisateur postgres.
    Peux-tu m'aider ??

    Voici ce qu'il y a dans mon fichier :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @authcomment@
     
    # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
     
    @remove-line-for-nolocal@# "local" is for Unix domain socket connections only
    @remove-line-for-nolocal@local   all         all                               @authmethod@
    # IPv4 local connections:
    host    all         all         127.0.0.1/32          @authmethod@
    # IPv6 local connections:
    host    all         all         ::1/128               @authmethod@
    # Database administrative login by UNIX sockets
    LOCAL   ALL         postgres                          trust

  8. #8
    Membre Expert
    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
    Par défaut
    Ce fichier pg_hba.conf.sample doit être j'imagine un modèle de fichier pg_hba.conf mais personnellement je ne me rappelle pas avoir vu ce type de fichier.
    Quelle est le package de postgresql que tu utilises? Récupéré sur le web, pré-installé avec le système, compilé soi-même? Et aussi quel système d'exploitation ou quelle distribution si c'est du linux?

    Pour administrer la base, une des premières choses à faire est de répérer où se trouve sur disque les fichiers de log et les fichiers de configuration, et hélas ça dépend du package et du système, chacun ayant tendance à organiser les répertoires avec ses propres conventions.

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

Discussions similaires

  1. [AC-2007] Automatisation de l'import d'un fichier csv dans ma bdd
    Par Bubulle232 dans le forum VBA Access
    Réponses: 22
    Dernier message: 31/01/2012, 11h22
  2. [AC-2010] [débutant] Code pour automatiser l'import de fichiers csv
    Par Jul38 dans le forum VBA Access
    Réponses: 12
    Dernier message: 16/12/2011, 08h49
  3. automatiser l'importation d'un fichier texte
    Par aaristocat dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/07/2010, 21h05
  4. [AC-2003] Automatiser import/export avec fichiers normalisés
    Par sonia13 dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/06/2010, 12h45
  5. Automatisation dans l'importation d'un fichier
    Par benoît82 dans le forum Access
    Réponses: 12
    Dernier message: 18/06/2006, 12h34

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