Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#176 Re : Général » Trier et injecter dans une base. » 24/11/2009 17:05:08
Pas tout à fait clair.
Ce que j'ai compris c'est que tu as une table (appelons-là table1) avec 3 champs nom, prénom, ville.
tu fais une requête avec tri par ville, et tu insère le résultat dans une 2ème table (disons table2).
Ensuite tu parcours cette table pour créer une table par ville et recopier les personnes habitant chaque ville?
Je ne vois pas l'intérêt. Surtout, je ne pense pas que cela te rende service si on te réponds comment faire cela, car je pense que tu t'égares. Apparemment, tu n'as pas encore compris comment fonctionne une base de données relationnelle. Comme tu dis que tu es débutant, cela me semble largement plus probable qu'un besoin très très spécial.
Peux-tu nous en dire plus sur pourquoi tu essaies de faire cela?
#177 Re : Général » Débuter : impossible de saisir un password » 23/11/2009 15:39:03
Oui c'est bien ce que j'ai remarqué, il me demande MON mot de passe. C'est bien cela (ajouter le -U postgres)
Mais le plus simple c'est encore d'utiliser pgAdminIII pour le faire...
#178 Re : Général » Débuter : impossible de saisir un password » 23/11/2009 15:25:10
Tu as quoi comme message d'erreur?
#179 Re : Général » Débuter : impossible de saisir un password » 23/11/2009 15:17:33
Pour aller un peu plus loin, gleu a fait de la publicité pour un livre qui a l'air également de bien répondre à ton besoin :
Installer et débuter avec PostgreSQL
http://www.digitbooks.fr/catalogue/9782815001809.html
Je ne l'ai pas lu, mais il a l'air intéressant. Et il aborde l'installation avec le "One Click installer".
#180 Re : Installation » noob demande aide pour desinstaller et reinstaller Postgre » 06/11/2009 00:11:01
Quel est le problème exact?
Est-ce que c'est le problème décrit ici ?
http://blog.kryskool.org/index.php/post … Windows-XP
Sinon, je vous conseille de mieux décrire le(s) problème(s) que vous avez, ce que vous avez fait (quel installeur vous avez utilisé entre autres) , etc... afin que cela fasse un peu avancer le schmilblick.
#181 Re : Général » LISTEN/NOTIFY et HIBERNATE-- question pour les experts » 15/10/2009 13:56:49
Entretemps, pour info j'ai vu que le driver JDBC sait gérer LISTEN/NOTIFY.
lien vers la documentation
Sinon, pourquoi utiliser le cache de niveau 2 d'Hibernate? il me semble qu'on ne doit l'utiliser que pour des données rarement modifiées (données de référence, paramètres…), sinon on se contente du cache de premier niveau.
Si tu n'actives pas le cache de niveau 2 (ce qui est le plus fréquent), Hibernate évite justement de refaire un select, en se servant d'un numéro de version et en effectuant une requête de type :
update …
where cle = …
and version = …
et il vérifie l'incohérence en comptant le nombre de lignes modifiées (si zéro, c'est que la donnée a été modifiée entretemps)
Et s'il n'y a pas de numéro de version, il met tous les champs dans la clause Where…
A ta place, j'irai plutôt chercher du côté de Hibernate, sinon je crains que tu ne montes une usine à gaz en essayant de récupérer les Notify, puis en essayant d'en informer Hibernate, si c'est possible…
Ou alors je laisserai tomber Hibernate si le besoin n'est pas fort.
#182 Re : Installation » Installation MDweb et PostgreSQL » 09/10/2009 11:38:11
menu démarrer, paramètres, panneau de configuration. Choisir "système", puis l'onglet "avancé. Tout en bas à gauche cliquer sur le bouton "variables d'environnement". Tu peux ensuite ajouter ou éditer les variables d'environnement. Pour Path, les chemins sont séparés par des point-virgule. Exemple :
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot%\system32\nls;C:\Program Files\Java\jdk1.5.0_15\jre\bin;C:\ant\bin
Il te suffit d'ajouter à la suite le chemin des binaires de Postgres (c'est à dire du répertoire bin qui contient les binaires), qui va dépendre de ce que tu as choisi à l'installation. Par défaut il me semble que c'est le chemin indiqué par Marc.
#183 Re : Général » Sous requêtes à faire pour chaque enregistrement d'une 1ère requête » 24/09/2009 15:20:44
Il y a l'article de Marc :
ici :
et la documentation:
tutorial et
la référence
#184 Re : Migration » Migration Vues Oracle avec jointures externes. » 01/06/2009 15:54:53
FROM p_aap, p_entity left join a_entity_go on (p_entity.entity_incde = a_entity_go.ENTITY_INCDE), a_entity_go left join a_theme_go on (a_entity_go.GO_INCDE = a_theme_go.go_incde)
Tu as mis 2 fois la table a_entity... En fait, si on met p_aap de côté pour l'instant, ce que tu demandes au moteur, c'est de calculer d'une part la jointure entre p_entity et a_entity :
p_entity left join a_entity_go on (p_entity.entity_incde = a_entity_go.ENTITY_INCDE),
D'autre part la jointure entre a_entity et a_theme :
a_entity_go left join a_theme_go on (a_entity_go.GO_INCDE = a_theme_go.go_incde)
Et de faire le produit cartésien des 2... d'où les lignes en trop.
Il aurait fallu écrire comme ceci :
p_entity left join a_entity_go on (p_entity.entity_incde = a_entity_go.ENTITY_INCDE)
left join a_theme_go on (a_entity_go.GO_INCDE = a_theme_go.go_incde)
et attention, tu as laissé la jointure entre p_aap et p_entity dans la clause where (c'est pas très propre, il vaudrait mieux la mettre avec tout ça dans un inner join
Ca doit être donner quelque chose de ce genre, si je ne fais pas d'erreur :
FROM
p_aap
INNER JOIN p_entity
ON (p_aap.aap_incde = p_entity.entity_incde)
LEFT OUTER JOIN a_entity_go
ON (p_entity.entity_incde = a_entity_go.ENTITY_INCDE)
LEFT OUTER JOIN a_theme_go
ON (a_entity_go.GO_INCDE = a_theme_go.go_incde)
#185 Re : Général » Hibernate » 27/05/2009 21:37:44
%t STATEMENT: alter session set nls_date_format='DD/MM/YYYY'
Ah ça, c'est de l'Oracle pur jus! Ton Hibernate pense avoir affaire à une base Oracle.
Tu devrais sans doute vérifier le paramétrage d'Hibernate.
#186 Re : Général » Hibernate » 27/05/2009 14:33:50
C'est le même problème. Je m'explique : il y a en fait 2 choses dans ton problème :
1 : une première erreur a eu lieu dans la transaction (elle devrait apparaître dans la log). Tu n'as pas fourni cette erreur, donc impossible de t'aider là-dessus...
2 : l'erreur n'est pas gérée, ce qui entraîne les erreurs "current transaction is aborted..."
En cherchant un peu on trouve une explication très simple :
http://archives.postgresql.org/pgsql-ge … g00513.php
Au fait, c'est au démarrage que se produit la série d'erreurs, non?
En conclusion, trouve la toute première erreur et poste-là avec l'ordre SQL qui l'a causée.
#187 Re : Général » export/sauvegarde partiel de table » 26/05/2009 12:29:10
#188 Re : Migration » Migration Vues Oracle avec jointures externes. » 20/05/2009 17:11:20
Il me semble qu'il y a une erreur dans le sens de la jointure :
le + sous Oracle donne le côté où il peut y avoir des NULL (ici c'est sur t_fnc_principal pour la première jointure, ce qui veut dire qu'on doit prendre tous les éléments de t_entity)
Or le t_fnc_principal LEFT OUTER JOIN t_entity on signifie qu'on prend tous les éléments de t_fcn_principal.
(la difficulté avec la syntaxe en + c'est que selon les moteurs le + n'est pas toujours du même côté : c'est probablement de là que vient l'erreur)
http://www.orafaq.com/wiki/Outer_join
Ici t_entity est la table "centrale" (celle dont on prend toutes les lignes, qu'il y ait ou non correspondance) et on fait des jointures externes sur les autres (qui sont elles-mêmes des résultats de requêtes)
Si je ne fais pas d'erreur, le select devrait donner :
select t_fnc_principal.usr_incde as usr_fnc_principal,
t_fnc_secondaire.usr_incde as usr_fnc_secondaire,
t_go_principal.usr_incde as usr_go_principal,
t_go_secondaire.usr_incde as usr_go_secondaire,
t_go_secondaire.go_secondaire as go_secondaire,
t_fnc_secondaire.fnc_secondaire, t_go_principal.go_principal,
t_fnc_principal.fnc_principal, t_bo_usr.usr_excde as bo_usr_excde, t_entity.*
from p_entity t_entity
LEFT OUTER JOIN
(
select entity_incde, entity_go_incde as go_principal, usr_incde
from p_entity, a_bo_usr_go
where entity_go_incde = go_incde
) t_go_principal
ON ( t_go_principal.entity_incde = t_entity.entity_incde )
LEFT OUTER JOIN
(
select entity_incde, entity_fnc_incde as fnc_principal, usr_incde
from p_entity, p_bo_usr
where entity_fnc_incde = usr_fnc_incde
) t_fnc_principal
ON ( t_fnc_principal.entity_incde = t_entity.entity_incde )
LEFT OUTER JOIN
(
select p.entity_incde, fnc_incde as fnc_secondaire, usr_incde
from p_entity p, a_entity_fnc a, p_bo_usr
where a.entity_incde = p.entity_incde
and fnc_incde = usr_fnc_incde
) t_fnc_secondaire
ON ( t_fnc_secondaire.entity_incde = t_entity.entity_incde )
LEFT OUTER JOIN
(
select p.entity_incde, a.go_incde as go_secondaire, usr_incde
from p_entity p, a_entity_go a, a_bo_usr_go abug
where a.entity_incde = p.entity_incde
and a.go_incde = abug.go_incde
) t_go_secondaire
ON ( t_go_secondaire.entity_incde = t_entity.entity_incde )
LEFT OUTER JOIN
p_bo_usr t_bo_usr
ON ( t_bo_usr.usr_incde = t_entity.entity_crt_incde )
#189 Re : Général » Hibernate » 19/05/2009 11:53:17
Ne serait-ce pas parce que tu as eu une erreur précédemment dans ta transaction?
Avec Oracle, il me semble que tu peux très bien ignorer une erreur et continuer ta transaction (ce qui est sale, soit dit en passant...). Avec PostgreSQL, non. Il faut donc que tu cherches l'erreur précédente pour connaître la cause de ton problème. Idéalement, il faudrait aussi que tu revoie la gestion des erreurs dans ta transaction...
(il est plus simple de regarder dans la log de PostgreSQL, j'ai déjà eu quelques soucis avec Hibernate, j'ai l'impression qu'il ne reporte pas toujours correctement les erreurs, en plus il est très bavard)
Pour le fait d'être en autocommit ou non, ça doit se régler dans Hibernate.
#190 Re : Général » Modification de la valeur d'un champ date » 18/05/2009 19:02:29
Le problème ne serait-il pas plutôt que ton id est un character varying?
(au vu du message d'erreur :
ERROR: operator does not exist: character varying = integer
)
Alors que dans ta requête tu passes un entier.
#191 Re : Java » JDBC 3 et postgres » 11/05/2009 10:26:27
1) Le driver est là : http://jdbc.postgresql.org/
Et la documentation y est aussi.
Après c'est du classique : tu dois mettre le .jar dans le Build Path d'Eclipse (je suppose que tu fais le build de ton projet par Eclipse)
Pour le déploiement il doit être dans le CLASSPATH de ton application.
2)
Avec une SimpleDataSource (Il y a 2 implémentations fournies selon les besoins : http://jdbc.postgresql.org/documentation/80/ds-ds.html )
org.postgresql.ds.PGSimpleDataSource ds = new org.postgresql.ds.PGSimpleDataSource();
ds.setDatabaseName("basetest");
ds.setUser("postgres");
ds.setPassword("postgres");
try {
Connection con = ds.getConnection();
[...]
Avec le DriverManager :
// chaine de connexion
String url="jdbc:postgresql:basetest";
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url,"postgres","postgres");
Les différentes formes possibles d'URL sont décrites ici :
http://jdbc.postgresql.org/documentatio … nnect.html
3)
Que veux-tu dire par "se connecter à un schéma?". Une connexion JDBC se connecte à une base, pas à un schéma.
Tu peux exécuter les ordres SQL en précisant le schéma des objets, par exemple :
Statement st = con.createStatement();
st.execute("select * from schema1.matable");
Sinon, si tu veux éviter de préfixer le nom des objets par le schéma, va voir ce post :
http://forums.postgresql.fr/viewtopic.p … 1392#p1392
Flo
#192 Re : Général » Syntaxe des Requetes SQL » 07/05/2009 10:44:30
Pour écrire les noms de table sans préciser le schéma, c'est possible : il faut modifier le chemin de parcours des schémas (search_path)
C'est expliqué ici :
http://docs.postgresql.fr/8.3/ddl-schemas.html
(paragraphe 5.7 : chemin de parcours des schémas)
Il faut modifier le paramètre search_path dans le fichier postgresql.conf
Pour les guillemets, pourquoi ne pas les mettre par défaut? Access et MySQL ne supportent pas les guillemets? ( il me semble que les guillemets sont un standard SQL). Si un jour tu utilises Oracle, tu auras le même problème : Oracle passe les noms de champs et de tables en majuscule si on ne met pas de guillemets.
#193 Re : Général » Prè-requis PG_FOUINE » 16/04/2009 18:11:18
Pour syslog, c'est apparement dans /var/log.pgsql que les logs partent, vu sa configuration, non?
Il y a cette ligne dans le fichier syslog.conf :
local0.* -/var/log/pgsql
Pourquoi utiliser pgfouine sur le fichier /PGSQL/PGTEST01/pg_log/postgresql-2009-04-15_102210.log dans ce cas?
/PGSQL/PGTEST01/pg_log/postgresql-2009-04-15_102210.log
Au fond, si j'ai bien compris, il y a 2 solutions :
Soit laisser log_destination à syslog, et lire le fichier écrit par syslog. Dans ce cas pour pgfouine il faut : fournir l'option "-logtype stderr" . Déjà, est-ce que le fichier existe? est-ce que syslog a été redémarré? Mais il faudrait trouver comment éviter de créer des fichiers inutiles?
Soit modifier postgresql.conf (remodifier log_destination pour qu'elle valle stderr).
(je ne peux pas tester ici, c'est par contre ce que je testerais si j'étais bil69)
NB : pour l'option l'option "-logtype stderr", ce ne serait pas lié au paramètre log_line_prefix = '%t [%p]: [%l-1] ' ?
#194 Re : Migration » Migration de procédure de Sybase vers PostgreSQL » 03/04/2009 15:08:03
Si je comprends bien, la procédure COU_ExistId fait un select sur la base pour voir si l'identifiant existe.
La procédure COU_Get appelle COU_ExistId (pour savois si l'id existe), puis, si l'id existe, sélectionne le 'cou'.
Pourquoi faire 2 fois la même chose?
Tu peux déjà commencer par simplifier en supprimant la procédure COU_ExistID et en faisant directement le 2ème select. Ca sera plus simple, plus performant (sans compter que si une transaction concurrente supprime la ligne entre les 2 requêtes, tu risques des surprises)
Sinon, pour en revenir au problème principal, il est beaucoup plus logique que ce soit le client qui vérifie s'il y a des lignes renvoyées (l'absence de résultat n'est pas un problème technique, mais fonctionnel).
Apparemment tu es en train d'adapter le client de toute façon? Pourquoi est-ce un problème de modifier légèrement le client? (avec ton exemple je ne comprend pas très bien). Si tu dois vraiment afficher ou loguer le même code d'erreur que dans l'application d'origine, au pire tu peux ajouter une couche au client, qui traite la requête et crée le code et le message d'erreur en fonction de la procédure appelée...
#195 Re : Installation » BDD test » 02/04/2009 18:12:55
Je n'ai pas de base de ce genre, mais tu peux facilement générer des données pour peupler une table avec generate_series :
Exemple pour générer 250 000 lignes:
insert into matable (id, name) select generate_series(1,250000) as truc, 'toto' || generate_series(1,250000) as machin;
test=# select * from matable;
id | data | name
--------+------+-----------
1 | | toto1
2 | | toto2
3 | | toto3
4 | | toto4
5 | | toto5
6 | | toto6
7 | | toto7
(7 rows)
Pratique, non?
Ce que j'ai fait ensuite pour ma base de test, c'est écrire quelques procédures stockées pour peupler mes autres tables (il fallait dans mon cas que ce soit cohérent aussi fonctionnellement pour qu'on puisse utiliser l'application d'une manière réaliste). J'ai donc utilisé un mélange de valeurs "en dur", et de fonctions random() dans des boucles.
#196 Re : Installation » Installer Postgresql sur Debian Lenny, repertoire data » 29/03/2009 08:44:58
Quel est le résultat de la commande :
ps -ef | grep postgres
?
#197 Re : Installation » pb installation postgresql 8.3 » 12/03/2009 17:19:28
J'utilise (au boulot) postgresql 8.3.5 sur XP Pro SP2, sans problème.
Quelle version de postgresql as-tu essayé d'installer?
Avec quel moyen : le "one clic installer", ou bien le msi?
Es-tu certain d'avoir récupéré l'intégralité du fichier? Il m'est arrivé une fois d'avoir des problèmes de ce genre, c'était dû à une corruption du fichier d'installation. As-tu vérifié la signature MD5 (si tu n'as pas pris la version "one click installer")? Ou vérifié la taille du .exe (si tu as pris le "one click installer"?
#198 Re : Général » Problème d'encodage » 27/02/2009 15:14:08
J'ai déjà eu le problème... et trouvé ceci dans la documentation de la 8.3 :
http://docs.postgresql.fr/8.3/multibyte.html
Il existe, cependant une importante restriction : le jeu de caractère de la base de données doit être compatible avec la variable d'environnement LC_CTYPE coté serveur. Quand LC_CTYPE est C ou POSIX, tous les jeux de caractères sont autorisés, mais pour les autres valeurs de LC_CTYPE il n'y a qu'un seul jeux de caractères qui fonctionne correctement. Puisque la variable LC_TYPE est figée par la commmande initdb, l'apparente flexibilité apportée par l'utilisation d'encodages différents dans différentes bases de données est plus théorique que réelle, sauf à choisir la locale C or POSIX (ce qui a pour conséquence de désactiver la gestion des paramètres régionaux). Il est probable que ces mécanismes soient revisités dans une prochaine version de PostgreSQL™.
Mais j'ai l'impression que ce n'est pas si simple :
Sur le cluster que j'ai créée sur mon poste de travail (Windows XP), je peux créer des bases Win1252 et UTF8.
Sur le cluster du serveur redhat, LATIN9 uniquement...
D'ailleurs, j'ai une question subsidiaire : une fois le cluster créé, comment connaître LC_CTYPE?
#199 Re : Général » update qui renvoie plus d'une ligne » 21/01/2009 15:40:34
Lorsque tu fais un update, tu cherches à mettre à jour ta colonne avec une valeur donnée.
Par exemple :
update employes set salaire = 1000;
(tu mets tous les salaires de la table employes à 1000)
ou bien :
update employes set salaire = 1000 where nom = 'Dupont';
(tu mets à jour le salaire de tous les employés dont le nom est 'Dupont').
Dans le cas que tu nous donnes, la valeur est le résultat de la sous-requête : select champ2 from table2 a, table1 b where a.id = b.id
Or cette sous-requête ramène probablement plusieurs lignes, d'où l'erreur...
Si tu n'arrives pas à trouver comment résoudre le problème, il faudrait que tu donnes ta requête réelle (ou une requête similaire, mais parlante) et que tu nous explique ce que tu cherches à faire.
Cherches-tu à mettre à copier la valeur de table2.champ2 dans table1.champ1, en faisant le lien sur l'identifiant?