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

Outils PostgreSQL Discussion :

[pgAdmin 3] Restore de dump par sql editor


Sujet :

Outils PostgreSQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 58
    Points : 36
    Points
    36
    Par défaut [pgAdmin 3] Restore de dump par sql editor
    Bonjour,
    sous postgreSQL 8.4, je souhaite utiliser pgAdmin pour lire un fichier dump.sql et l'exécuter, pour restaurer une bdd sauvée à chaud, tout cela via SQL editor de la fenêtre query.
    Début du fichier dump :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    -- PostgreSQL database dump
     
    SET client_encoding = 'UTF8';
    SET standard_conforming_strings = off;
    SET check_function_bodies = false;
    SET client_min_messages = warning;
    SET escape_string_warning = off;
     
    -- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: postgresql
     
    CREATE PROCEDURAL LANGUAGE plpgsql;
    ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO postgresql;
    J'obtiens une erreur pendant l'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERREUR: erreur de syntaxe sur ou près de « 1 »
    correspondant à la 1ère ligne de la 1ère table de données récupérée par commande COPY:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    COPY adresse_postale (id_adresse_postale, batiment, escalier, etage, porte, rue, cp, ville) FROM stdin;
    1					rue du tarn	12345	SOURISCITY
    2	\N	\N	\N	\N	rue Ritchie	00000	Ailleurs
    Je suspecte un saut à la ligne non reconnu (dans la case en bas de la fenêtre, je lis "Unix", mais je suis sous Windows 2000 Pro).
    Le problème survient à la 1ère ligne de toute table.
    Dois-je changer le format de fin de ligne ? l'encodage ?
    Désolé pour cette question de novice postgre, merci par avance.

  2. #2
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Je pense que le problème vient de l'interpretation des COPY FROM STDIN de l'editeur SQL de pgadmin.

    Je vois 2 solutions possibles:

    1 - Effectuer la restauration à partir d'une invite de commande (console cmd si sous windows), et lancer la commande psql -f "nom du dump.sql"

    2- Si vous tenez à rejouer à partir de l'editeur SQL de pgadmin, il y a la solution de faire un Dump en générant les commandes INSERT à la place des COPY (Attention la taille du dump sera plus importante).

    En utilisant PG_DUMP avec l'option -D (avec les noms de colonnes dans les commandes insert) ou -d (sans les noms de colonnes dans les insert)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 58
    Points : 36
    Points
    36
    Par défaut
    Ok, merci.
    1- j'ai essayé plusieurs commandes depuis le SQL Shell (psql) sans succès, même si je précise le nom de la base vierge d'accueil du dump dans la commande.
    Depuis cmd, je me place dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Program Files\PostgreSQL\8.4\bin>psql
    Mot de passe :
    psql: FATAL:  authentification par mot de passe échouée pour l'utilisateur  « nom-prenom »
    Je n'ai que mon mot de passe de superuser postgres, mais ça ne va pas.
    2- Le problème est qu'on me fournit le dump.sql (déjà 80 Mo) qui importe les data par COPY, je ne peux pas modifier cela. Et ça serait super lent d'importer par des millions d'INSERT.
    Au final, j'ai reçu le même dump mais en .BACKUP, ouvert depuis pgAdmin dans la base vide. La base a bien été restaurée. Je ne vois pas pourquoi ça marche dans un cas et pas dans l'autre....

  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
    Tu aurais pu faire pour te connecter si tu connais le mot de passe de postgres.

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par mister2502 Voir le message
    ...Au final, j'ai reçu le même dump mais en .BACKUP, ouvert depuis pgAdmin dans la base vide. La base a bien été restaurée. Je ne vois pas pourquoi ça marche dans un cas et pas dans l'autre....
    PG_DUMP peut fournir 2 types de sauvegardes, une sous forme de script et l'autre sous forme d'archive.

    Je pense que votre premier dump était au format texte et contenait un script au format sql (ce qui peut être pratique lorqsu'on veut modifier certaines choses avant de le rejouer) , on doit utiliser PSQL pour la restauration ou un éditeur SQL.

    La seconde sauvegarde est sous un autre format, elle peut etre utilisée qu'avec l'outil PG_RESTORE. Que vous avez utilisés directement avec l'interface de pgadmin, si j'ai bien compris.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 58
    Points : 36
    Points
    36
    Par défaut
    Oui, la fenêtre de restauration de pgAdmin lance un code PG_RESTORE.
    Par cmd, ok, il ne demande plus de mot de passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    C:\Program Files\PostgreSQL\8.4\bin>psql -U postgres
    psql (8.4.1)
    [...]
     
    postgres=# psql -f "C:\dump1.sql"
    postgres-#
    mais rien ne se passe.

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    psql -U postgres -f "C:\dump1.sql"

    en une seule ligne doit fonctionner normalement

  8. #8
    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
    Le -f est une option de ligne de commande de psql, ce n'est pas à utiliser une fois dans psql.
    Une fois dans psql, ce serait plutôt la commande \i
    Utiliser \? pour avoir l'aide en ligne de psql

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 58
    Points : 36
    Points
    36
    Par défaut
    Ok, merci pour vos réponses.
    Je m'en sors dans tous les cas maintenant.
    A +

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

Discussions similaires

  1. Table ASCII utilisée par SQL Server
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/06/2005, 14h31
  2. Backup et restore d'une base SQL Server
    Par ZeKlubb dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/03/2005, 18h17
  3. compter des enregistrement par SQL
    Par 973thom dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/11/2004, 18h26
  4. Chargement de fichier par SQL LOADER
    Par davy.g dans le forum SQL*Loader
    Réponses: 17
    Dernier message: 15/11/2004, 13h08
  5. Comment obtenir la description des tables par SQL
    Par rcastaldi dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/03/2004, 14h13

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