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

#51 Re : Général » Restauration d'une table » 26/01/2011 19:47:31

Effectivement, ca a l'air de marcher, merci à toi!
Les séquences sont mêmes mises à jour, alors que j'étais obligé de les remettre manuellement quand je faisais une synchronisation "artisanale".
Merci encore, a bientot!

#52 Re : Général » Restauration d'une table » 26/01/2011 16:58:35

Je n'y arrive pas :-(

Voici la commande que je tape :
c:\PTRS_BDD\synchromanuelle\2011-1-26>C:\APPLI_BDD\PostgreSql\bin\psql.exe -U postgres base_test -f synchro.backup

Mais ca retourne une erreur:
psql: warning: extra command-line argument "-f" ignored
psql: warning: extra command-line argument "synchro.backup" ignored psql (8.4.4)
WARNING: Console code page (850) differs from Windows code page (1252)
                 8-bit characters might not work correctly. See psql reference
                 page "Notes for Windows users" for details.
Type "help" for help.

#53 Re : Général » Restauration d'une table » 26/01/2011 16:35:53

J'ai donc maintenant un seul script en sortie de "pg_dump" : save.sql
Mais je ne vois toujours pas comment restaurer ce script sur la base destination?
Quand j'arrive dans la conseole de psql, comment puis je spécifier le chemin du fichier save.sql???

#54 Re : Général » Restauration d'une table » 26/01/2011 12:53:51

Alors, résumons!

Donc, j'héberge une base "maitre" sur un serveur. Via un script utilisant "pg_dump", je fais un backup quotidien de ma base sur le serveur.

Ensuite, j'ai différents clients, qui ont une base "client" hébergée sur mon serveur, ou sur un serveur à eux.
Lors de l'installation d'un client, je fais simplement un restore du dernier backup de ma base "maitre".

Nous développons actuellement un outil de synchronisation entre la base "maitre" et les bases des clients. Cette syncrhonisation récupère uniquement des données de la base "maitre", mais aucune données de la base client. En attendant que cette synchronisation soit développée, on effectue une synchronisation "manuelle", sachant que les tables étant mises à jour chez nous ne sont pas mises à jour chez le client. Par contre, d'autres tables de la base sont bien mises à jour chez le client. Ainsi, je ne peux pas utiliser un dump de la base en entier pour mettre à jour la base du client.

Comme j'utilisais déja un script pour le backup quotidien de ma base, je me suis dit qu'un script était la solution la plus adaptée à la synchronisation manuelle.
C'est pourquoi je voulais procèder de la sorte :
- sauvegarde des données des tables de la base "maitre" à mettre à jour chez le client
- suppression des données de ces tables chez le client
- restauration des données des tables de la base "maitre" sauvegardées précédemment chez le client

Pour répondre à Marc :
- vu que je passe par un script, je n'ai pas à taper 30 fois la commande "pg_dump" dans psql, mais juste à exécuter mon batch!
- il y a donc bien une liste de 30 tables, après je pense qu'il est plus "logique" de la donner au moment de la sauvegarde des données.

Merci,

#55 Re : Général » Restauration d'une table » 26/01/2011 11:27:56

Oui mais le problème la, c'est que je génère 30 scripts comme il y a 30 fichiers à traiter.
Donc je suis obligé de taper 30 fois ta commande via psql, ce qui n'est pas pratique.

#56 Re : Général » Restauration d'une table » 26/01/2011 11:09:03

Je ne suis pas sur de comprendre...

En fait je sauvegarde mes X fichiers via un batch contenant X lignes de "pg_dump" avec l'option "--data-only" :

C:\PostgreSQL\9.0\bin\pg_dump.exe --host %nom_serveur% --port 5432 --username postgres -t matable --data-only--file "%rep_save%matable.backup" mabase

Je voudrais donc pouvoir en faire de même avec un script de restauration, mais j'ai visiblement un soucis avec la syntaxe lors de l'exécution de :

C:\PostgreSQL\9.0\bin\pg_restore.exe --host %nom_serveur% --port 5432 --username postgres -t matable --data-only --file "%rep_save%matable.backup" mabase

Mais lorsque j'execute le script j'obtiens un message d'erreur :

pg_restore: [archiveur] n'a pas pu ouvrir le fichier en entrée « mabase » : No such file or directory

Aurais tu une idée?
Avec psql, il n'y a pas moyen de faire de script comme je veux le faire si?

Désolé encore si tu te répètes, mais je ne comprends pas...

#57 Re : Général » Restauration d'une table » 26/01/2011 10:39:33

Donc d'accord j'utilise "--data-only" pour ma requête de sauvegarde?
Mais pour la requête de restauration, quelqu'un pourrait m'aider à trouver la syntaxe exacte?

#58 Général » Restauration d'une table » 25/01/2011 19:41:40

Gold.Strike
Réponses : 17

Bonjour,

J'ai un soucis avec la restauration de fichiers via pg_restore.

Afin de procéder à une synchronisation manuelle entre 2 bases situées sur des serveurs différents, je procède effectivement à :
- une sauvegarde des tables via pg_dump depuis la base source
- un "vidage" des données des tables sur la base destination (DELETE FROM matable)
- une restauration via pg_restore sur la base destination

Voici le type de scripts utilisés :
- sauvegarde :
C:\PostgreSQL\9.0\bin\pg_dump.exe --host %nom_serveur% --port 5432 --username postgres -t matable--inserts --file "%rep_save%matable.backup" mabase
-restauration :
C:\PostgreSQL\9.0\bin\pg_restore.exe --host %nom_serveur% --port 5432 --username postgres -t matable --data-only --file "%rep_save%matable.backup" mabase

Quand je regarde le contenu des fichiers créés via "pg_dump", ils semblent contenir la structure et les données, malgré l'usage de "--inserts".
Mais je n'arrive pas à restaurer les données. Je n'obtiens pas de message d'erreur dans mon script, mais les tables restent vides après son passage...

Une idée?

#59 Re : Général » Récupérer la valeur courante de différentes séquences d'une base » 25/01/2011 18:06:14

Oui mais pour avoir toutes les valeurs d'un coup??
Peut on par exemple créer un script qui exécuterait cette commande pour toutes les séquences nécessaires et inscrirait le résultat dans un fichier texte??

#60 Général » Récupérer la valeur courante de différentes séquences d'une base » 25/01/2011 17:48:08

Gold.Strike
Réponses : 3

Bonjour,

Je cherche un script ou une requête me permettant de récupérer la valeur courante de toutes les séquence d'une base, ou d'une série de séquance d'une base.
J'ai trouvé un topic assez proche de ce que je voudrais faire (http://forums.postgresql.fr/viewtopic.php?id=487), mais il n'y a pas pas la valeur courante pour :
SELECT * FROM information_schema.sequences

Y a t'il autre chose?

#61 Re : Général » "no buffer space available" sur la création d'une nouvelle BDD !! » 14/01/2011 14:46:07

Après avoir redémarré le serveur ça a l'air bon.
Seulement, je me demande pourquoi cette erreur est apparue subitement, alors que je n'avais jamais eu de soucis.
Est il possible de paramétrer la gestion mémoire du serveur Postgre? Cela se fait il base par base?
Merci,

#62 Général » "no buffer space available" sur la création d'une nouvelle BDD !! » 14/01/2011 12:08:31

Gold.Strike
Réponses : 3

Bonjour,

J'ai un serveur Windows Server 2008 R2 avec Postgre SQL 8.4. J'héberge sur ce serveur différentes bases pour mon application : une base de prod, une base de test, quelques bases pour les clients.

Jusqu'à aujourd'hui tout marchait bien. J'ai voulu mettre à jour ma base de test comme je le fais habituellement :
- sauvegarde de la base de prod
- suppresion de la base de test
- création de la base de test
- restauration de la base de prod sur la base de test

Mais aujourd'hui, quand j'ai essayé de créer cette base de test, j'ai eu un message d'erreur : "no buffer space available".
Ce message s'est finalement "propagé" à l'ensemble des bases du serveur et plus rien ne fonctionnait.
J'ai donc arrêté le serveur, mais quand j'essaie de me reconnecter, j'ai le message suivant :


Le serveur n'écoute pas

Le serveur n'accepte pas les connexions : la bibliothèque de connexion rapporte
could not connect to server: No buffer space available (0x00002747/10055) Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432? 

Auriez vous une idée?

#63 Re : Installation » Installer une deuxième version de PostGRE sur le même serveur » 10/01/2011 18:13:27

Je n'ai rien trouvé sous Windows...
J'ai regardé sur la configuration d'OVH comme il s'agit d'un serveur dédié, mais il ne semble qu'il n'y a rien non plus.
Je vais donc me pencher du coté de pgbouncer et pgpool...

#64 Re : Installation » Installer une deuxième version de PostGRE sur le même serveur » 10/01/2011 12:20:34

Mais dans mon cas, quelle est la solution la plus simple à mettre en place selon toi?
- l'installation d'un cluster en parallèle
- la redirection de port

#65 Re : Installation » Installer une deuxième version de PostGRE sur le même serveur » 10/01/2011 12:11:18

D'accord merci, je regarderais...

On m'a également suggérer d'utiliser le "Reverse proxy" avec Apache, afin de rediriger un des ports dispo chez le client vers le port utilisé actuellement...
Qu'en penses tu?

#66 Re : Installation » Installer une deuxième version de PostGRE sur le même serveur » 10/01/2011 11:53:27

Le système d'exploitation est Windows Server 2008 R2, et Postgre a été installé via un package d'installation (postgresql-8.4.4-1-windows.exe).

#67 Installation » Installer une deuxième version de PostGRE sur le même serveur » 10/01/2011 11:31:00

Gold.Strike
Réponses : 13

Bonjour,

J'ai vu qu'il était possible de faire cohabiter 2 versions différentes de Postgre sur le même système, mais je n'ai pas encore trouvé la marche à suivre!
Par contre, serait il possible de faire cohabiter 2 versions identiques de Postgre sur le même serveur?

J'ai en effet Postgre SQL 8.4 installé sur un serveur avec le port par défaut 5432. Sur ce serveur, je stocke plusieurs bases de données "client" et une base de syncrhonisation.
J'ai cependant un soucis avec un utilisateur qui n'arrive pas à accéder à ce port. Il faudrait donc que :
- je modifie le port utilisé par la version actuelle -> ce qui me pose problème car il faudrait modifier les informations de connexion de différents utilisateurs
- installer une nouvelle version de Postgre sur un port différent -> je souhaiterais que la version soit la même afin d'éviter les problèmes de compatibiltié

Auriez vous des conseils ou des tutoriels à me suggérer?

Merci!

#68 Re : PL/pgSQL » SOS requête imbriquée » 09/11/2010 17:55:08

Hum je ne suis pas sur de m'être bien fait comprendre.
Ta syntaxe marche bien, mais ne valorise par la colonne T1.X1 comme je l'espérais!!

En effet, avec la requête SELECT précédente :

select T3.X3 MonChampA, T1.X2 MonChampB
from Table1 T1
inner join Table2 T2 on T2.X1 = T1.X2
inner join Table3 T3 on T3.X1 = T2.X2
where T3.X3 in 
(select T10.X1
from Table10 T10
inner join Table11 T11 on T11.X1 = T10.X2
where T10.X3 = T1.X2)

J'obtiens une valeur différente par ligne pour ma colonne T3.X3

Mais avec la requête UPDATE que tu m'as donné, tous les champs T1.X1 se retrouvent avec la même valeur après son exécution...

Ne faudrait il pas que je parte plutot sur une fonction pl/sql pour faire cette mise à jour?

#69 Re : PL/pgSQL » SOS requête imbriquée » 09/11/2010 16:50:58

Oki d'accord merci, je comprends mieux...

En fait, ma requête serait plutot :

select T3.X3 MonChampA, T1.X2 MonChampB
from Table1 T1
inner join Table2 T2 on T2.X1 = T1.X2
inner join Table3 T3 on T3.X1 = T2.X2
where T3.X3 in 
(select T10.X1
from Table10 T10
inner join Table11 T11 on T11.X1 = T10.X2
where T10.X3 = T1.X2)

Mais je souhaiterais mettre à jour la colonne X1 de table T1, avec les valeurs récupérées dans T3.X3...
Cela est il faisable via une requête update?

#70 Re : PL/pgSQL » SOS requête imbriquée » 09/11/2010 16:29:29

Bah l'erreur c'est tout simplement que la requête ne passe pas : le nom de la colonne n'est pas reconnue dans la sous-requête.

ERREUR: la colonne « MonChampB » n'existe pas

#71 PL/pgSQL » SOS requête imbriquée » 09/11/2010 15:59:43

Gold.Strike
Réponses : 7

Bonjour,

J'ai un soucis avec une requête imbriquée, qui pourtant me parait plutot simple...

Je ne sais pas si la solution consiste à utiliser un curseur, une fonction pl/sql ou une variable, mais je voudrais comparer un champ récupérer dans la requête "principale" avec un champ de la "sous-reuqête" : MonChampB.


select T1.X1 MonChampA, T1.X2 MonChampB
from Table1 T1
inner join Table2 T2 on T2.X1 = T1.X2
inner join Table3 T3 on T3.X1 = T2.X2
where T3.X3 in 
(select T10.X1
from Table10 T10
inner join Table11 T11 on T11.X1 = T10.X2
where T10.X3 = MonChampB)

Quelle est la solution?

#72 Re : Général » Problème avec la sauvegarde d'une données de type bytea avec Postgre 9 » 14/10/2010 11:00:45

Merci de ton aide,

On a donc corrigé le problème en modifiant le fichier postgresql.conf :

bytea-output='escape'

#73 Général » Problème avec la sauvegarde d'une données de type bytea avec Postgre 9 » 13/10/2010 18:22:21

Gold.Strike
Réponses : 7

Bonjour,

Je développe un projet en C# (Framework .Net 4), avec une base de données PostgreSQL.
Je suis confronté à un problème concernant la sauvegarde et la récupération de données d'une colonne de type bytea, suite au passage de la version Postgre SQL 8.4 à la version 9.

Lorsque je récupère dans mon code la donnée de type byte[] stockée dans ma base de données, celle ci est différente et est deux fois plus grande que celle qui a été sauvegardée avec une la version base de Postgr 9, alors que les données sont bien identiques avec la version 8.4.

Explications :

J'ai un tableau de byte de taille 100, je le sauvegarde dans la base de donnée à l'aide d'une requête classique :

command.CommandText = "INSERT INTO table(donnees) VALUES(:donnees)";
command.Parameters.Add(new NpgsqlParameter("donnees", DbType.Binary)).Value = monByteA;

Je récupère ensuite cette donnée à l'aide d'une requête du type :

command.CommandText = "SELECT donnees FROM table WHERE id = 308";

J'obtiens bien un byte[] mais celui-ci pèse 201 (100*2+1).

Quelque soit la valeur de mon byte[] sauvegardé, la valeur récupérée est celle d'origine*2+1.
Il n'y pas donc pas moyen d'exploiter les données récupérées...

Je n'ai pas ce soucis avec la version de Postgre 8.4, mais le problème apparait sur une base sauvegardée depuis la version 8.4 et qui a été restaurée sur une version 9...

- Auriez vous une idée d'où ce problème peut venir?
- Je n'ai pas vu de références particulières aux données de type 'bytea' dans le changelog de Postgre 9, y a t'il une gestion différente?
- Dans le pire des cas, la donnée traitée peut être stockée au format XML, mais cela engendrerait des pertes de performances.

#74 Optimisation » Optimisation d'une base de données hébergée chez OVH (Serveur dédié) » 19/08/2010 11:19:50

Gold.Strike
Réponses : 14

Bonjour,

Nous sommes actuellement en train de développer une application .Net en C#, basée sur une base de données PostGre.

La base de données contient actuellement 120 tables, pèse actuellement 60 MO (phase de test) et nous utilisons des images pour stocker des logos, des schémas ou des photos.
Les images sont stockées au format "bytea".
A partir de l'application nous récupérons les images dans des Large Object.
Nous utilisons des index sur les clés primaires et les clés externes.

Nous observons de grandes différences de performances entre :
- l'utilisation d'une base de données "locale", hébergée sur un serveur en interne
- l'utilisation d'une base de données hébergée sur le serveur OVH (bande passante garantie de 200 Mb/S)

Le temps d'affichage de certains écrans passe d'un rapport de 1 à 8, et cela se produit principalement sur les écrans contenant des images ou un éditeur développé en WPF et intégré à l'application.

Par exemple, nous affichons une liste de 700 éléments, contenant des logos et des drapeaux qui prends 2 secondes en local et 1minute30 sur le serveur OVH.
Pourtant chaque image est une miniature de 16x16 ou 20x20 et n'excède pas 1 à 2 KO.

Au niveau du serveur, il s'agit d'un Intel Xeon E5405 64bits, avec 2 processeurs à 2 GHz, disposant de 16 Go de RAM.
Il tourne sous Windows 2008 R2 Standard.

Auriez vous des idées ou des conseils d'optimisation du serveur Postgre?
J'ai pour l'instant modifié les réglages de Postgresql.conf en me basant sur ceux fournis dans cette page "http://infodecisionnel.com/bdd/optimisa … ostgresql/".
Est ce adapté à mon cas?
Que puis je modifié d'autre?

Merci,

Pied de page des forums

Propulsé par FluxBB