PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » Ajouter une clé primaire à une vue » 08/10/2019 09:58:17

Bonjour, l'orque vous faite votre scripte SQL il suffit d'ajouter row_number() OVER () AS oid dans le select comme ci-dessous.

Désolé pour le délai, mais UN GRAND MERCI pour ta réponse, RplnySIG : je viens seulement de tester et approuver la méthode.
cool

#2 Re : Général » Modifier les noms de tables et de colonnes... » 06/03/2019 13:06:07

Merci Marc pour ta requête qui m'a été très utile !
(Il n'est jamais trop tard pour remercier, même 8 ans après !)

Voici celle pour les colonnes, pour ceux qui chercheraient encore :

SELECT 'ALTER TABLE '||table_schema||'."'||table_name||'" RENAME COLUMN "' || column_name || '" TO ' || lower(column_name) ||';' from information_schema.columns WHERE table_schema = 'monschema' AND lower(column_name)<>column_name;

Pour aller plus loin (et plus vite), quelle serait la méthode pour exécuter directement les requêtes issues du SELECT, si possible depuis PGAdmin ? (je me débrouille en SQL, mais pas encore en scripts, "plpgsql" si je ne me trompe pas ?).

Merci pour vos conseils !

A+

Sylvain M.

#3 Re : Migration » Déplacement du répertoire "PostgreSQL/9.2/data/base" » 19/10/2018 15:48:39

Bonjour,
Je m'apprête à devoir faire la même chose (déplacer le dossier "C:\Program Files\PostgreSQL\9.3\data" de mon systeme sur un autre lecteur).
Cette question a été posée en 2014, et nous n'avons pas eu de retour de guk92 après :
- est-ce que tout s'est bien passé ?
- laquelle des 2 méthodes proposée par gleu as-tu utilisée ?
- as-tu des points de vigilances particuliers ?
Merci pour vos retours et conseils smile

(j'ai encore un peu de place sur C:\, donc je ne suis pas très pressé wink )

Sylvain M.

#4 Re : Général » Masquer le contenu de certains schémas à un utilisateur » 18/01/2018 10:37:27

mais vous risquez de vous en mordre les doigts étant donné la quantité de choses que ça peut casser.

Merci Marc pour ton bon conseil !
Du coup, je ne vais effectivement pas me lancer là dedans wink
Bonne journée !

Sylvain M.

#5 Général » Masquer le contenu de certains schémas à un utilisateur » 17/01/2018 17:03:07

Sylvain M.
Réponses : 2

Bonjour à tous,

J'ai créé un utilisateur qui n'est censé lire le contenu que d'un schéma d'une base de données.
Hors, je me rend compte que, s'il ne peut bien afficher le contenu des tables (SELECT) de ce schéma, il peut voir (via PgAdmin) la liste et structure de toutes les tables des autres schémas.
Est-il possible de masquer à un utilisateur le contenu de certains schémas ?

Voici ce que j'avais écris jusqu'à présent :

CREATE USER toto WITH PASSWORD 'mdptoto' ;
GRANT USAGE ON SCHEMA shematoto TO toto ;
GRANT SELECT ON ALL TABLES IN SCHEMA shematoto TO toto ;

Merci pour vos conseils.

Sylvain M.

#6 Re : Général » Ajouter une clé primaire à une vue » 31/01/2017 18:11:53

Bonjour à vous,
Je relance ce sujet car j'ai à peu près la même question.
Lorsque l'on affiche une table ou une vue PostGreSQL dans le logiciel QGis, ce dernier nécessite que la table/vue ait une clé primaire. Il est possible de la définir manuellement, mais ce serait plus simple si cela pouvait être pré-défini par la requête de création de la vue.
De mon côté, ce sont plus précisément des "Vue matérialisées" (http://docs.postgresqlfr.org/9.4/rules- … views.html).
Sauriez vous comment faire en sorte que la clé prémiaire soit prédéfinie en SQL ?
Merci à vous.

Sylvain M.

#7 Re : Sécurité » Sauvegarde / Restauration : optimisation sous Windows » 15/12/2015 16:45:27

Bonjour et désolé de ne pas vous avoir remercié plus tôt pour vos réponses : MERCI !

1) tu peux compresser à la volée l'export avec un pipe (pg_dump.....|gzip mon_fichier.dump)
ou en utilisant les options de compression native à pg_dump en ne faisant pas un tar mais un format personnalisé (voir la doc)

Effectivement, le format personnalisé est plus efficace, pour la restauration ensuite également.

2)sur la deuxieme machine debian il doit manquer des locales par rapport à la debian d'origine (voir avec la commande locale -a)
Si il en manque il faut les installer.

Bon, mon souci c'est que je ne connais pas du tout l'environnement linux, et que je n'avais encore jamais entendu ce terme de "locale" avant de lire votre réponse...
Je vais voir pour approfondir cette question !


Par contre, en essayant de comprendre un peu mieux le message d'erreur, et grace à vos réponses, je me dis que c'est mon export qui n'a pas le bon encodage (French_France.1252 au lieu d'UTF-8). Il suffirait que je précise l'encodage en sortie (-E codage, --encoding=codage) ?
Par contre, je ne sais pas trop comment j'écris cette option ?

-E 'UTF-8'

(avec des guillemets ???)

Merci à vous !

Sylvain M.

#8 Re : Sécurité » Sauvegarde / Restauration : optimisation sous Windows » 09/12/2015 18:45:53

Je poursuis sur ce fil car j'ai encore 2 questions d'optimisations dans mon processus de Sauvegarde / Restauration.

1] La première concerne la compression de l'archive sauvegardée.
J'ai compris que le TAR n'était pas compressé. Effectivement, si je compresse ses 1.5 Go avec 7Zip (par exemple), je passe à 400 Mo.
Que me conseillez-vous pour optimiser le poids des fichiers en sortie ?

2] La deuxième concerne une tentative de transfert de ma base sur un autre Serveur, celui-ci sous installé sur une machine Debian.
J'ai tenté de lancer le pg_restore sur ce serveur, mais j'obtiens le message d'erreur suivant :

pg_restore: connexion à la base de données pour la restauration
pg_restore: création de DATABASE ma_base
pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC
(« PROCESSING TOC ») :
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 3447 ;
1262 1537996 DATABASE ma_base postgres
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  nom de locale invalide : « French_France.1252 »
    La commande était : CREATE DATABASE ma_base WITH TEMPLATE = template0 ENCODING =
 'UTF8' LC_COLLATE = 'French_France.1252' LC_CTYPE = 'French_France....
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  la base de données « ma_base » n'existe pas
    La commande était : ALTER DATABASE ma_base OWNER TO postgres;

Problème d'encodage on dirait ?
Auriez vous des conseils pour éviter ce problème ?

Merci à vous.

Sylvain M.

#9 Re : Sécurité » Sauvegarde / Restauration : optimisation sous Windows » 09/12/2015 16:36:48

non la base de données du "-d" sert à la connexion et doit donc exister avant.

Donc si je remplace "-d base" par "-d postgres", ça va se connecter à la base postgres (qui existe), et recréer la base dont le nom est sauvegardé dans le backup ?? (du fait du "-C")
Je ne voudrais pas corrompre ma base postgres, donc je préfère votre avis avant.

Merci encore.

Sylvain M.

[edit]
J'ai remplacé base par postgres, ça tourne !! SUPER ! MERCI !
[/edit]

#10 Re : Sécurité » Sauvegarde / Restauration : optimisation sous Windows » 09/12/2015 15:32:03

Quelle est la commande que tu passes et qui génère l'erreur ?

Je viens, sur ton modèle, d’exécuter celle-ci :

pg_restore -C -d base --host localhost --port 5432 --username postgres --verbose "C:\Users\Name\...\backup_base.tar"

Mais j'ai le message d'erreur suivant :

pg_restore: [programme d'archivage (db)] la connexion à la base de données « base » a échoué : FATAL:  la base de données « base » n'existe pas

Effectivement, "base" n'existe pas, mais je pensais que le "-C" allait la créer ???

Sylvain M.

#11 Re : Sécurité » Sauvegarde / Restauration : optimisation sous Windows » 09/12/2015 15:06:15

sur la sortie standard

Excuse moi, mais je ne comprends pas ce terme de "sortie standard" ?
Je viens de revenir sur mon poste, et la fenêtre DOS continuait avec les caractères qui défilent : ça devait donc tourner en boucle (mais ça part "où" ??), et je l'ai donc fermé.

Il faut spécifier le nom de la base dans laquelle restaurer en utilisant l'option « -d »

Je pensais que l'option « -C » allait créer la base de donnée (dont le nom doit être dans la sauvegarde ?)
Je viens d'ajouter « -d base » à ma commande, mais j'ai eu le message

trop d'arguments en ligne de commande (le premier étant « -d »)
Essayer « pg_restore --help » pour plus d'informations.

Merci pour ton aide !

Sylvain M.

#12 Sécurité » Sauvegarde / Restauration : optimisation sous Windows » 09/12/2015 13:32:51

Sylvain M.
Réponses : 11

Bonjour à tous,

Je suis novice sur PostGreSQL, et je souhaite actuellement tester la sauvegarde de mes premières bases de données.
Mon serveur est installé sur un poste Windows 7, et j'ai lancé la commande suivante pour créer une archive TAR d'une BDD :

pg_dump --host localhost --port 5432 --username postgres --format tar --blobs --verbose --file "C:\Users\Name\...\backup_base.tar" base

Celle-ci s’exécute correctement et créé bien le TAR souhaité en quelques secondes (moins de 2 min)

Je tente maintenant la restauration de ce TAR avec cette commande (après avoir renommé l'ancienne base sauvegardée) :

pg_restore -C --host localhost --port 5432 --username postgres --verbose "C:\Users\Name\...\backup_base.tar"

Voila maintenant près d'une demie heure que j'ai une fenêtre DOS avec des caractères qui défilent (à la Matrix !!).

Le TAR créé fait 1,5 Go.
Peut-être est-ce normal que la restauration soit aussi longue, mais j'ai quand même un gros doute...

Pourriez-vous me confirmer/infirmer que c'est normal, et éventuellement me dire ce que je peux faire pour optimiser cela ?

Merci à vous (et merci de votre indulgence avec un débutant ! ;-) )

Sylvain

Pied de page des forums

Propulsé par FluxBB