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

Administration PostgreSQL Discussion :

Comment mettre en oeuvre la commande pg_dump


Sujet :

Administration PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 71
    Points : 57
    Points
    57
    Par défaut Comment mettre en oeuvre la commande pg_dump
    Bonjour,

    je souhaiterais planifier un pg_dump (je suis sous windows). Pour cela j'utiliserais le planificateur de tâche. L'objectif est de mettre en œuvre pg_dump dans un batch (chose que je parviens à faire avec un requête sql standard).

    Le fait est que je ne parviens pas à exécuter pg_dump dans le shell. Pouvez-vous me donner un exemple de mise en oeuvre de commande pg_dump.

    J'ai essayé pg_dump ma_base > base.sql lu dans la doc mais rien ne se passe.

    Par avance merci,

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Bonjour,

    Avez-vous regardé la documentation officielle de Postgre ? pg_dump y est documenté.

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Le lien vers la documentation de pg_dump : https://postgresql.developpez.com/do...tion/francais/

    Il faut souvent spécifier l'adresse du serveur (option -h suivie de l'adresse IP du serveur), le port d'écoute (option -p suivie du numéro de port), le nom d'utilisateur se connectant au serveur (option -U suivie du nom de l'utilisateur), le nom de la base de données à sauvegarder...

    Attention, si la base est volumineuse, la sauvegarde peut prendre un moment... "Il ne se passe rien" peut alors correspondre à une sauvegarde en cours, mais qui prend du temps... Il faut regarder si le fichier cible se crée et s'il grossit.
    Sinon, il faut mieux expliquer ce "il ne se passe rien".

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 71
    Points : 57
    Points
    57
    Par défaut
    Bonjour et merci pour votre aide. Je pense que je confonds certains qui fond que j'ai du mal à mettre en œuvre la commande pg_dump.

    Comme je le disais plus haut j'ai réussi à mettre en place un batch qui vide ma table. Je souhaiterais maintenant que ce batch exécute une sauvegarde de ma table.

    Le batch est ainsi construit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    @echo off
     
    REM PostgreSQL server psql runner script for Windows
    REM Dave Page, EnterpriseDB
     
    SET server=localhost
     
     
    SET database=postgis
     
     
    SET port=5432
     
    SET username=postgres
     
    SET vidertable="C:\PostgreSQL\9.0\scripts\vidertable.sql"
     
     
    for /f "delims=" %%a in ('chcp ^|find /c "932"') do @ SET CLIENTENCODING_JP=%%a
    if "%CLIENTENCODING_JP%"=="1" SET PGCLIENTENCODING=SJIS
    if "%CLIENTENCODING_JP%"=="1" SET /P PGCLIENTENCODING="Client Encoding [%PGCLIENTENCODING%]: "
     
    REM Run psql
    "C:\PostgreSQL\9.0\bin\psql.exe" -h %server% -U %username% -d %database% -p %port% -f %vidertable%
     
     
    pause
    et le contenu de mon fichier .sql "vidertable") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM test_trigger;
    C'est dans un fichier sql que je voudrais intégrer le code pg_dump pour sauvegarder ma table automatiquement. La doc postgresql indique
    Sauvegarder une base appelée ma_base dans un script SQL :
    Est ce que un .sql est considéré comme un script sql?

    J'ai essayé de mettre dans fichier .sql pg_dump et les options proposées par CED avec également une option -f mais aucun fichier ne se crée.
    J'ai essayé sans option il me renvoie une même erreur de syntaxe à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (error syntaxe near pg_dump)
                                        ^

  5. #5
    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
    pg_dump n'est pas une commande SQL, c'est un programme à part entière, au même niveau que psql.exe. C'est pourquoi il doit être appelé en ligne de commande ou dans un fichier batch et non dans un script SQL.
    D'après le code du batch montré dans ton message, l'appel à pg_dump devrait être ajouté dans le fichier .BAT suivant ce modèle:
    "C:\PostgreSQL\9.0\bin\pg_dump.exe" -h %server% -U %username% -p %port% -t nom_de_la_table %database% > backup.sql
    Il reste à remplacer nom_de_la_table par le vrai nom et à remplacer backup.sql par un chemin complet.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 71
    Points : 57
    Points
    57
    Par défaut
    Un grand merci estofilo,
    Etant peu expérimenté en BDD, ta réponse m'a bien aidé à comprendre le pourquoi du comment. J'ai finalement réussi à mettre en oeuvre mon pg_dump.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/05/2010, 09h43
  2. [AJAX] Mettre en oeuvre ajax
    Par sebac dans le forum AJAX
    Réponses: 7
    Dernier message: 12/04/2010, 15h01
  3. Comment mettre en oeuvre ces conditions ?
    Par Attila54 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/02/2010, 15h25
  4. comment mettre en oeuvre dataguard sur oracle 11
    Par gold15 dans le forum Oracle
    Réponses: 1
    Dernier message: 07/07/2009, 09h34
  5. Réponses: 3
    Dernier message: 30/07/2008, 11h51

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