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 : Installation » Partagé pgdata pour des Pgsql en local » 19/08/2015 13:00:09

Donc si je comprend bien, pour qu'une base de donnée soit partagée, il faut que Postgres soit aussi "partagé" (dans mon cas, il faut qu'il soit installé sur le serveur) ?

#2 Installation » Partagé pgdata pour des Pgsql en local » 19/08/2015 11:05:14

Logiquefloue
Réponses : 3

Bonjour,

On arrive pas à installer PostgrSQL sur un serveur distant d'un client!! Je souhaite savoir si il serai possible d'installer en local  PostgrSQL sur plusieurs postes et mettre les fichiers de données "pgdata" sur un serveur partagé ?
l'idée est de faire pointer, ensuite, les "pgdata" de chaque poste vers le "pgdata" partagé via des liens symbolique...que pensez-vous, cela peut fonctionner ?

d'avance, merci.

#3 Re : Installation » Postgres sans installateur » 13/07/2015 17:40:02

Bonjour,

J'ai finalement rajouté, dans mon application, un script qui lance le .bat.
Pour ceux que ça intéresse voici le code python :

import os
os.chdir("C:\Users\PORTABLE\Desktop\batfile")
os.sytsem("hello.bat)

Merci pour ton aide rjuju, j'ai appris pleins de trucs avec toi smile

#4 Re : Installation » Postgres sans installateur » 09/07/2015 21:36:06

Quand vous dite " Vous pouvez toutefois ajouter ce script dans la liste des scripts à lancer au démarrage si c'est plus simple pour vous." c'est la liste des scripts qui démarrent avec Windows au lancement de la machine ?
Vous l'avez compris, en fait, je cherche une solution pour lancer le serveur automatiquement, soit au lancement de mon application soit au démarrage de Windows...mais le fait que je ne soit pas administrateur sur la machine, ça limite mes possibilités!

#5 Re : Installation » Postgres sans installateur » 09/07/2015 20:29:17

rjuju a écrit :

L'installation classique permet notamment d'ajouter un nouveau service windows. Si vous n'avez pas les privilèges suffisant pour ajouter un service, il faut effectivement démarrer manuellement l'instance. Vous pouvez toutefois ajouter ce script dans la liste des scripts à lancer au démarrage si c'est plus simple pour vous.

Ajouter ce script coté Postgresql, cela est possible ? effectivement ça serai la solution pour moi car je n'ai pas l'autorisation d'ajouter des services...

#6 Re : Installation » Postgres sans installateur » 09/07/2015 11:14:29

OK, j'ai créer un serveur depuis pgAdmin et ça fonctionne. Merci c'était bien le REM que je laissait !!
Pour communiquer avec mes base de données depuis mon application, dois-je à chaque fois lancer le script pour démarrer le serveur ? avec l'installation classique j'avais pas besoin de cela

#7 Re : Installation » Postgres sans installateur » 09/07/2015 10:42:03

Ah! non je n'avais pas retirer le "REM" de la ligne : REM "%~dp0\bin\initdb" -U postgres -A trust

Je ne suis pas sûr de comprendre la procédure ! voici ce que je fais :
1/ décompresser le zip pgsql
2/ créer le script (.bat) dans le dossier pgsql
3/ retirer le "REM"
4/ lancer le script
5/lancer pgAdmin qui se trouve dans pgsql\bin

Non, je n'ai aucune erreur, tout semble ok

#8 Installation » Postgres sans installateur » 09/07/2015 09:56:37

Logiquefloue
Réponses : 9

Bonjour,

Je souhaite avoir Postgresql sur un poste sous win dont je ne suis pas l'administrateur. Donc je dois "l'installer" sans passer par l'installation "classique" (.exe). la version binaire de postgresql semble permettre cela.
J'ai suivi ceci http://dba.stackexchange.com/questions/ … ostgresql/  mais sans succès ! quand je démarre pgAdmin je ne trouve pas mon serveur, et si j'ajoute un serveur depuis pgAdmin, je reçois le message : serveur doesn't listen.
Je ne sais ce que je ne fais pas bien !!

Quelqu'un a déjà fait ce type d’installation ?

Merci

#9 Re : Général » Fusionner(joindre)les résultats d'une requête » 12/03/2015 16:15:32

Très bien, je vais voir cela avec l'hébergeur.
Merci de votre aide smile

#10 Re : Général » Fusionner(joindre)les résultats d'une requête » 12/03/2015 12:55:02

C'est la version 9.0.13 qui est installée.
Quand j'execute le code :

-- the generic crosstab function:
CREATE OR REPLACE FUNCTION crosstab(text)
RETURNS setof record
AS 'MODULE_PATHNAME','crosstab'
LANGUAGE C STABLE STRICT;

J'ai l'erreur "permission denied for language c" !

#11 Re : Général » Fusionner(joindre)les résultats d'une requête » 12/03/2015 11:43:05

Depuis PgAdmin, pour la création de l'extension, j'exécute le code suivant sur ma bd hébergée :

 CREATE EXTENSION tablefunc
  SCHEMA public
  VERSION "1.0";

Voici le message d'erreur

ERROR:  syntax error at or near "EXTENSION"
LINE 5:  CREATE EXTENSION tablefunc

La vue "pg_available_extensions" n'est pas dans la liste des vues présentes sur ma bd hébergée.

#12 Re : Général » Fusionner(joindre)les résultats d'une requête » 12/03/2015 10:38:47

Bonjour,
Merci Julien pour ta réponse. Effectivement, la fonction "crosstab" répond parfaitement à ce qu'est recherché. Voici le code complet de la requête pour les lecteurs intéressés.(test fait sur une bd locale)

SELECT * FROM crosstab('SELECT objet, dateM, valeur FROM mesure ORDER BY dateM DESC LIMIT 2 OFFSET 0')AS ct (objet text, dateM double precision, valeur double precision);

L'utilisation de cette fonction est possible qu'après l'installation de l'extension "tablefunc". Ma base de données est hébergée sur un serveur mutualisé. Je pense que l'extension n'est pas installée sur le serveur et donc je n'arrive pas à exécuter la fonction "crosstab". Comment ça se passe dans le cas d'un serveur mutualisé, c'est à l'hébergeur d'installer les extensions de Postgresql ?
Merci.

#13 Général » Fusionner(joindre)les résultats d'une requête » 07/03/2015 18:30:06

Logiquefloue
Réponses : 8

Bonjour,

J'ai la table suivante :
mesure :
objet    dateM                 valeur

obj1     2013-01-01       4
obj2     2014-02-15       2
obj1     2010-09-14       5
obj2     2011-12-25       10
obj1     2008-01-25       25

Je cherche à trouver les valeurs des deux plus récentes dates pour chaque objet et afficher le résultat sur une seule ligne. Voici le résultat attendu :

objet    dateM1                 valeur1       dateM2              valeur2

obj1     2013-01-01          4                 2010-09-14        5
obj2     2014-02-15          2                 2011-12-25       10


Avec le code ci-dessous, j'arrive à trouver les bonnes valeurs mais sur 2 lignes. J'ai aussi essayer les jointures sans succès!

SELECT objet, dateM, valeur FROM mesure ORDER BY dateM DESC LIMIT 2 OFFSET 0

Merci de votre aide.

#15 Général » demande d'aide sur une requete[Résolu] » 02/03/2015 09:46:16

Logiquefloue
Réponses : 2

Bonjour,
Je vous sollicite dans le cadre d’une requête que je n’arrive pas à coder.
J’ai deux tables

Table travaux :
CT          dateT
Obj1        2011-01-01
Obj1        2012-01-01
Obj2        2014-01-01
Obj4        2015-01-01

Table mesure :
CM          mesure               dateM
Obj1         1                       2010-05-01
Obj1         4                       2013-01-01
Obj1         8                       2015-01-01
Obj2       0.5                      2015-01-01

La requête que j’essaye de faire consiste à trouver la mesure la plus faible de «CM » depuis la date d. d = la date la plus récent de CT où CT=CM
Dans notre exemple le résultat attendu est
CM         mesure
Obj1      4
Obj2      0.5

J’ai essayé cette requête mais elle me donne une erreur car l'expression de HAVING n'est pas correct

SELECT CM, min(mesure) FROM mesure INNER JOIN travaux ON ((CM = CT)) GROUP BY CM HAVING (dateM>max(dateT))

Merci d'avance

#16 Re : Général » Requêtes qui ne renvoie rien » 11/02/2015 15:52:13

c'est bon j'ai trouvé mon problème. il fallait faire  parent=c.paren.name
merci

#17 Général » Requêtes qui ne renvoie rien » 11/02/2015 11:42:04

Logiquefloue
Réponses : 1

Bonjour,
Dans mon code python, j’ai une requête (la 2ème) qui ne renvoie aucune valeur et je ne sais pas pourquoi !!
J’ai toujours recent[0] =None.
Merci de votre aide

voici le code :

for travaux ,recentT in db.prepare("SELECT site,max(date_travaux) FROM travaux GROUP BY site"):   
           ......
           je trouve l'année (annee)
           je trouve le site (c)       
       
           #s'il s'agit d'un site dans le groupe "Travaux"
           if c.name in bpy.data.groups["Travaux"].objects:
               #trouve le père du c
               pere=c.parent
               #je cherche la date la plus récente du père
               recentPere=db.prepare("SELECT MAX(date_travaux) FROM travaux WHERE id_travaux='%s'"%pere)               
               #je comprae la date du pere avec celle du C
               for recent in recentPere:                       
                         if(recent[0]!=None):
                           anneePere=str(recent[0].year)
                           if(anneePere>=annee):
                             ......

#18 Re : Général » Lenteur requêtes Postgres » 14/01/2015 13:18:01

Très bien c’est très clair. Cela veut dire que ma base peut être installée sur un serveur distant sans connaitre de véritable ralentissement à condition de programmer la logique en SQL ! Ouf, je suis rassuré !
Merci infiniment,

#19 Re : Général » Lenteur requêtes Postgres » 14/01/2015 12:52:23

Merci de votre réponse.
Pour mieux comprendre :
Je viens de faire un test de lancer la requête sql vous avez indiqué avec pgadmin sur le serveur distant, le temps d’exécution est 25ms ! Cela n’écarte pas la latence réseau ?
Quel est la différence entre programmer la logique en python (ou autre) et le faire en sql ?

#20 Général » Lenteur requêtes Postgres » 14/01/2015 12:05:39

Logiquefloue
Réponses : 5

Bonjour,

Je suis nouveau sur le forum et je suis débutant dans le « domaine » des bases de données.

J’ai un problème de lenteur avec mes requêtes quand j’utilise un serveur distant (serveur mutualisé ou mon pc en serveur sur un réseau).
Je souhaite connaitre l’avis des personnes plus expérimentées que moi pour être sûr que ma table et mes requêtes sont bien « faites » et optimisées…

Ma table « travaux » est constituée de 7 colonnes : id_site, date_travaux, commentaire…
Je souhaite connaitre la date_travaux la plus récente pour chaque site (sachant que un seul site peut avoir plusieurs date_travaux »
Voici ma requête que je lance depuis mon application « locale » écrite en python :

# parcourir les sites dans table « travaux »
for site in db.prepare("SELECT DISTINCT id_site FROM travaux"):
           # chercher la date la plus récente
recentT=db.prepare("SELECT MAX(date_travaux) FROM site WHERE id_site='%s' " %site[0])

Le temps d’exécution de cette requête sur une table de 450 lignes :
En Local : 1s
Serveur distant : 13s

pour info, la connexion à la base depuis l'application est très rapide, donc ce n'est pas cela la cause du ralentissement.

Merci de votre aide.

Pied de page des forums

Propulsé par FluxBB