Vous n'êtes pas identifié(e).
Pages : 1
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.
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.
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
(j'ai encore un peu de place sur C:\, donc je ne suis pas très pressé )
Sylvain M.
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
Bonne journée !
Sylvain M.
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.
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.
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.
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.
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]
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.
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.
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
Pages : 1