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).

#51 Général » [RÉSOLU] Affichage des commentaires pour une colonne sous psql » 19/01/2010 11:54:03

sophonie
Réponses : 2

Bonjour à toutes, et à tous,

J'ai crée un commentaire sur une colonne d'une table (sous psql). J'aimerai afficher ce commentaire
afin de savoir si il a été correctement pris en compte.

COMMENT ON retient.retient_id IS 'le panier articles retenu par un user'\g
\dd+ retient

me permet d'avoir le commentaire concernant la table, mais pas le comment. sur la colonne ...

Merci d'avance.
Sophonie.

#52 Re : Général » Migration du contenu d'un champ d'une table vers une autre table » 09/12/2009 17:13:36

Je ne comprends pas cette requête qui d'ailleurs me renvoi un message d'erreur. En effet,
la requête UPDATE fais appel à la table temp_records alors qu'elle porte sur la table oai_records.

#53 Re : Général » Migration du contenu d'un champ d'une table vers une autre table » 09/12/2009 17:02:42

Bonjour Marc Cousin,

Dans ta requête que je n'ai pas encore testé, je lis ceci :

 =temp.spatial

ne serait-ce pas plutôt temp_records à la place de temp, "c'est une question"

Sophonie.

#54 Général » Migration du contenu d'un champ d'une table vers une autre table » 09/12/2009 16:36:43

sophonie
Réponses : 4

Bonjour à tous et à toutes,

J'ai 2 tables, une table oai_records contenant plusieurs champs (ici 2 champs nous interresse, ie oai_identifier et ap_spatial).

Une table temp_records que j'ai crée et contenant 2 champs identifier et spatial.
Dans le champ ap_spatial de la table oai_records sont stockés les coordonnées de géoréférencement du tuple, mais ces dernières sont en Lambert 3 ==> aberration de l'affichage avec Google Map qui ne gère que du Lambert 2 (le problème des modules de cartographie du Web 2.0)

Solution : Dans la table oai_temp, j'ai importé les coordonnées Lambert 2 de chacun des tuples.
Ainsi l'unique correspondance entre les tuples est le champ oai_identifier(table oai_records) et identifier(table temp_records) Le but est de migrer le contenu du champ spatial de la table oai_temp dans le champ ap_spatial de la table oai_records et ce (identifier par identifier)

La requête suivante :
SELECT `oai_identifier` , `identifier` , `ap_spatial` , `spatial`
FROM oai_records
INNER JOIN temp_records ON oai_identifier = identifier

me renvoi bien tous les records ayant une correspondance dans les 2 tables (INNER JOIN)

Table oai_records                                                        Table temp_records
oai_identifier     ap_spatial                                          identifier            spatial
IA00024637        0358840 3312540                               IA00024637        -0.783333 45.283333

Faut-il passer une procédure stocké pour effectuer cette migration?

Merci d'avance.
Sophonie.

#55 Re : Général » Modification en cascade du propriétaire de la Base » 09/08/2009 13:39:40

Bonjour gleu,

En tapant un \dts sur la base de données jogstore, j'ai 39 lignes (incluant tables, séquences, index).
Je ne voudrai pas (peu professionnel, et lourd...) de faire 39 fois, la commande suivante

ALTER  ... OWNER TO ...;

Autre question :

J'aurai voulu créer un bloc PL/PgSQL permettant d'effectuer cette modification ...
Comment m'y prendre, uniquement la méthode et non la solution (à but d'initiation)

Merci d'avance.
Sophonie.

#56 Re : Général » Modification en cascade du propriétaire de la Base » 09/08/2009 12:34:55

J'ai effectué la commande suivante:

 REASSIGN OWNED BY postgres TO sophonie;

Effectivement cela ne peut pas marcher.

#57 Re : Général » Modification en cascade du propriétaire de la Base » 08/08/2009 12:15:10

Cependant un REASSIGN OWNED BY u1 TO u2 génère le message suivant :

ERREUR:  n'a pas pu supprimer les objets appartenant à rôle postgres car ils sont nécessaires au système de bases de données.

Pourtant je suis connecté à la base de données en question, et en tant qu'utilisateur
postgres!

#58 Général » Modification en cascade du propriétaire de la Base » 07/08/2009 18:20:47

sophonie
Réponses : 9

Bonjour à tous et à toutes,

J'ai modifié le propriétaire de la base de données sur laquelle je travaille actuellement, cependant cette opération n'a pas modifié en cascade le propriétaire des tables associées à la base de données.

Quelle commande doit-on effectuer afin que les modifications puissent agir sur l'ensemble
des tables de la base de données, mais aussi sur les séquences, les index ...

Merci d'avance.
Sophonie.

#59 Général » Impossibilité de modifier une Base de Données » 27/07/2009 23:06:28

sophonie
Réponses : 1

Bonsoir à tous et à toutes,

Voici la situation suivante :

+------------+--------------+----------+-------------+--------------+-----------------------+
|    Nom     | Propriétaire | Encodage |     Tri     | Type caract. |    Droits d'accès     |
+------------+--------------+----------+-------------+--------------+-----------------------+
| jogstoreDB | postgres     | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8  |                       |
| postgres   | postgres     | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8  |                       |
| template0  | postgres     | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8  | =c/postgres           |
|                                                                   : postgres=CTc/postgres |
| template1  | postgres     | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8  | =c/postgres           |
|                                                                   : postgres=CTc/postgres |
+------------+--------------+----------+-------------+--------------+-----------------------+
(4 lignes)

L'utilisateur sophonie existe, j'ai crée le role en tant que postgres.
Lorsque je souhaite modifier la base de données jogstoreDB afin d'en modifier le propriétaire.

ALTER TABLE jogstoreDB OWNER TO sophonie;

J'ai le message suivant :
ERREUR:  la base de données « jogstoredb » n'existe pas

1°) Comment se fait-il qu'il me parle d'une base de données jogstoredb (db en minuscule) alors que j'ai supprimé cette base et que j'ai crée jogstoreDB (DB en majuscule)

2°) Peut-on supprimer le cache (ou la mémoire tampon)d'une base de données postgreSQL si ce cache existe?

Merci d'avance.
Sophonie.

#60 Re : Général » Message d'avertissement au démarrage » 10/07/2009 20:14:26

Bonsoir,

Résolu, en lisant la documentation de PostgreSQL qui est plus explicite que le fichier
/usr/share/doc/postgresql-8.4.0/README.rpm-dist.

En vérifiant le fichier PG_VERSION ce dernier mentionnait 8.3, cela est dû au fait que j'ai installé PostgreSQL à partir des binaires du CDROM d'installation de Fedora 11 qui contenait à sa date de sortir la version 8.3.x

J'ai crée une base de données avec la version 8.3, puis lorsque j'ai fait la mise à jour ce message est apparu tout naturellement en instanciant la base de données.

Tout est plus clair maintenant.
N'ayant pas de données (ni même de tables dans cette base), je ne l'ai pas sauvegardé avec un pg_dumpall.
J'ai tout simplement  crée un nouveau cluster de base de données comme indiqué dans le manuel.

Merci encore.
Bonne soirée.

#61 Re : Général » Message d'avertissement au démarrage » 10/07/2009 10:51:09

En me connectant à un shell Unix, je tente de lancer le daemon postmaster, et j'ai le message suivant :

Une ancienne version du format de la base de données a été trouvée.
Vous devez mettre à jour le format des données avant d'utiliser PostgreSQL.

Comment peut-on (à l'aide quelle commande) mettre à jour le format de la base de données?

Merci d'avance
Sophonie.

#62 Re : Général » Message d'avertissement au démarrage » 09/07/2009 21:41:53

Bonsoir,

J'ai omis de vous dire que je venais tout juste d'installer la version 11 de Fedora Linux.
Le poste sur lequel j'ai effectué l'installation n'avait pas de base de données PostgreSQL.

L'installation de PostgreSQL provient du repository de fedora updates (PostgreSQL 8.3)
Par contre une mise à jour a été effectuée via le repository  de pgdg84 donc (PostgreSQL 8.4)

Il y a des chances que cela en soit la cause?

Sophonie.

#63 Général » Message d'avertissement au démarrage » 09/07/2009 11:33:14

sophonie
Réponses : 6

Bonjour à tous et à toutes,

Lors du démarrage de mon OS Linux, j'ai le message suivant :

une ancienne version de la base de données a été trouvée, avant d'utiliser postgreSQL veuillez consulter le fichier /usr/share/doc/postgresql-8.4.0/README.rpm-dist

Que signifie explicitement ce message car je viens juste d'installer la version 8.4 de PostgreSQL

Merci d'avance.
Sophonie.

#64 Re : PgAdmin3 » Objet Language sous pgAdmin 3 » 03/05/2009 21:52:28

J'ai trouvé, en fait via le menu Fichier -> Préférences -> Onglet Affichage il faut cocher Langages.

Résolu.

#65 PgAdmin3 » Objet Language sous pgAdmin 3 » 03/05/2009 21:28:56

sophonie
Réponses : 1

Bonsoir à tous et à toutes,

J'ai installé pgAdmin et j'ai autorisé l'utilisation du langage de procédure PL/pgSQL, d'ailleurs ce dernier est reconnu.
La commande createlang -l [nomdemabase] m'a permis de le savoir.

Par contre sous pgAdmin 3 l'objet Language (celui avec une bulle jaune) du navigateur  n'apparait pas!
Même en relançant le serveur et en rafraichissant rien n'y fait.

Merci d'avance.
Sophonie.

#66 Re : Général » Insertion des tuples dans la base avec un code PL/pgSQL. » 18/01/2009 23:29:57

Bonsoir gleu,

J'ai modifié mon script (ie j'ai mis en commentaire toutes les informations concernant la table personnes).
Je vais procéder par dichotomie (uniquement la table authentification dans un premier temps)

La fonction ajout_typp_dept() se réfère à l'authentification de la personne avant son insertion dans la table
personnes.

Par contre, lorsque tu dis que la requête :

SELECT * FROM ajout_typp_dept() AS t (id int4, c text, ...); doit être de ce type mais la variable t à quoi correspond-elle, d'une part? et faut-il la déclare dans le bloc DECLARE du script.
Je suppose que c'est une variable de type RECORD, ou de type-composite %ROWTYPE?

Merci encore une fois.

#67 Re : Général » Insertion des tuples dans la base avec un code PL/pgSQL. » 18/01/2009 12:37:19

Bonjour gleu,

En lisant la documentation de façon plus approfondie (j'avais lu ce chapitre sans vraiment l'appliquer),
j'en arrive à ce code si :

CREATE OR REPLACE FUNCTION ajout_typp_dept() RETURNS SETOF RECORD AS $$

DECLARE

v_idauth INTEGER;
v_idtype INTEGER;
v_iddept INTEGER;

v_type typepersonne.typp_libelle%TYPE;
v_dept departements.dept_nom%TYPE;

pers_rec personnes%ROWTYPE;
auth_rec authentification%ROWTYPE;

BEGIN

-- Récupération du type de la personne

v_type := 'Candidat';
SELECT typp_libelle INTO v_type FROM typepersonne WHERE typp_libelle = v_type; -- idem pour Recruteur

-- Récupération du département de la personne

v_dept := '24'; -- idem pour le 87
SELECT dept_nom INTO v_dept FROM departements WHERE dept_nom = v_dept;

-- Ajout dans la table AUTHENTIFICATION

INSERT INTO authentification (auth_id, auth_login, auth_password, auth_dtecreation, auth_dtelastconn, auth_actif)
VALUES ((SELECT NVL(MAX(auth_id),0) + 1 FROM authentification), 'transact','PLkHDS3', CURRENT_DATE, CURRENT_DATE, 1)
RETURNING (auth_id) INTO v_idauth;

SELECT * INTO auth_rec FROM authentification;
RETURN NEXT auth_rec;


-- Ajout dans la table PERSONNES

INSERT INTO personnes (pers_id, pers_nom, pers_prenom, pers_dtenaissance, pers_adresse1, pers_adresse2,
pers_cp, pers_ville, pers_telephone, pers_fax, pers_gsm, pers_email, pers_idauth, pers_idtype,pers_iddept)
VALUES ((SELECT NVL(MAX(pers_id),0) + 1 FROM personnnes), 'GENIN','Vincent', date(21/12/1984), '31, Route de Treillissac',
'', '', 'Treillissac', '0547253210', '', '0652497510', 'v.genin@netscape.net', v_idauth, v_type, v_dept);

SELECT * INTO pers_rec FROM personnes;
RETURN NEXT pers_rec;

RETURN;

COMMIT;
END;

$$ LANGUAGE 'plpgsql';

SELECT * FROM ajout_typp_dept();




Mais j'ai le message suivant :

ERROR:  a column definition list is required for functions returning "record"

********** Erreur **********

ERROR: a column definition list is required for functions returning "record"
État SQL :42601

#68 Re : Général » Insertion des tuples dans la base avec un code PL/pgSQL. » 17/01/2009 21:45:57

En ajoutant personnes (nomdelatable), il ne m'affiche pas de résultat de retour.
J'ai essayé un personnes%TYPE mais il ne l'accepete pas, d'ailleurs ni un personnes.pers_nom%TYPE.

#69 Re : Général » Insertion des tuples dans la base avec un code PL/pgSQL. » 17/01/2009 21:35:30

Bonsoir gleu,

Comme je l'ai annoncé dans le ticket initial, ceci est mon premier script PL/pgSQL.

Je me disais bien que quelque chose ne collait pas 'something is wrong!', j'attends un retour alors
que j'ai crée une procédure renvoyant VOID (ie rien!).

Mais que fallait-il mettre comme retour, telle était la question?

En PL/SQL sous Oracle, cet action est beaucoup plus simple car c'est un simple bloc de code sans
le CREATE OR REPLACE FUNCTION ... $$

Merci encore.

#70 Général » Insertion des tuples dans la base avec un code PL/pgSQL. » 17/01/2009 16:13:10

sophonie
Réponses : 8

Bonjour à tous et à toutes,

Actuellement, j'écris mon premier script PL/pgSQL, le but de ce script est le suivant :

-- Ecrire un code PL/pgSQL qui permettra de rajouter 2 personnes
-- un recruteur du département 87
-- un candidat du département 24

La requête s'execute correctement, mais ne renvoie aucun résultat, ce qui est normal.
Par contre lorsque je tape un ordre SQL à la suite du script pour récupérer mes tuples, je
n'en récupère aucun.

a) J'ai crée une procédure, dc elle ne renvoie pas de valeur. Aurait-il fallu créer une fonction?
Mais quelles seraient ses paramètres et le type de retour?

b) Pourquoi ne peut on pas mettre comme type de retour nomdelatable%ROWTYPE pour récupérer
l'ensemble des valeurs de la ligne.

Voici l'ensemble du code :

CREATE OR REPLACE FUNCTION ajout_typp_dept ( ) RETURNS VOID AS $$

DECLARE

v_idauth INTEGER;
v_idtype INTEGER;
v_iddept INTEGER;

v_type typepersonne.typp_libelle%TYPE;
v_dept departements.dept_nom%TYPE;

BEGIN

-- Récupération du type de la personne

v_type := 'Candidat';
SELECT typp_libelle INTO v_type FROM typepersonne WHERE typp_libelle = v_type; -- idem pour Recruteur

-- Récupération du département de la personne

v_dept := '24'; -- idem pour le 87
SELECT dept_nom INTO v_dept FROM departements WHERE dept_nom = v_dept;

-- Ajout dans la table AUTHENTIFICATION

INSERT INTO authentification (auth_id, auth_login, auth_password, auth_dtecreation, dtelastconn, auth_actif)
VALUES ((SELECT COALESCE (MAX(auth_id),0) + 1 FROM authentification), 'transact','PLkHDS3', CURRENT_DATE, CURRENT_DATE, 1)
RETURNING (auth_id) INTO v_idauth;

-- Ajout dans la table PERSONNES

INSERT INTO personnes (pers_id, pers_nom, pers_prenom, pers_dtenaissance, pers_adresse1, pers_adresse2,
pers_cp, pers_ville, pers_telephone, pers_fax, pers_gsm, pers_email, pers_idauth, pers_idtype,pers_iddept)
VALUES ((SELECT COALESCE (MAX(pers_id),0) + 1 FROM personnnes), 'GENIN','Vincent', date(21/12/1984), '31, Route de Treillissac',
'', '24000', 'Treillissac', '0547253210', '', '0652497510', 'v.genin@netscape.net', v_idauth, v_type, v_dept);


COMMIT;
END;

$$LANGUAGE plpgsql;

Merci d'avance, car je ne m'en sort pas.
Sophonie.

#71 Re : Général » Retour à la ligne dans une instruction SQL avec psql » 13/01/2009 03:59:56

Je te fais entièrement confiance pour cela gleu, ainsi je vais me diriger vers des utilisateurs de
la distribution FedoraCore.

Merci encore.
Sophonie.

#72 Re : Général » Retour à la ligne dans une instruction SQL avec psql » 12/01/2009 22:36:11

Les flèches de directions ne fonctionnent pas pour cette option de retour à la ligne dans une requête SQL.

On ne peut avoir que l'historique des commandes effectuées à l'aide des touches flèche haut et flèche bas.

#73 Général » Retour à la ligne dans une instruction SQL avec psql » 12/01/2009 14:50:21

sophonie
Réponses : 4

Bonjour à tous et à toutes,

J'aurai souhaité savoir comment effectuer un retour à la ligne dans une instruction SQL via psql.

En effet, si on tape une instruction 

CREATE TABLE nomdematable (
pers_id INTEGER NOT NULL,
pers_nom VARCHAR(50)
pers_prenom VARCHAR(10),   --OOhps j'ai commis une erreur de syntaxe et je veux corriger la ligne pers_nom et rajouter la virgule
--
--
--

Comment effectuer cette opération sous psql.
Merci d'avance.

Sophonie.

#74 Re : PL/pgSQL » Utilisation du PL/pgSQL dans pSQL et pgAdmin » 11/01/2009 04:36:03

Bonjour à tous et à toutes,

En fait le but de mon ticket était de savoir comment être sûr que le code PL/pgSQL écrit dans la console
était bien interpreté par psql.

Il faut commencer le code par un CREATE OR REPLACE FUNCTION nomdelafonction [void si c'est une procédure]
DECLARE
déclarer ses variables;
BEGIN
bloc d'instructions;
END;

Avec pgAdmin il faut une fois après avoir déclaré le langage via un createlang plpgsql nomdemabase,
clic du bouton droit sur l'icône plpgsql de l'objet LANGAGE ds le navigateur d'objet à droite -> SCRIPT CREATE
Une fenêtre s'ouvre et nous propose de commencer l'élaboration du script.

Sophonie
Bonne soirée.

#75 PL/pgSQL » Utilisation du PL/pgSQL dans pSQL et pgAdmin » 09/01/2009 12:18:44

sophonie
Réponses : 1

Bonjour à tous et à toutes,

J'aurai souhaité savoir comment utilisé le langage PL/pgSQL au sein de l'environnement psql.

En effet, j'ai tapé CREATE LANGUAGE plpgsql et le shell m'a sorti :
plpgsql is already exist. Implicitement à la création de la base de données le langage est installé.

Comment écrire le code PL/pgSQL, sur Oracle avec SQL Developer je suis arrivé à en écrire.
Mais sous PostgreSQL je ne vois pas par où commencer.

Merci d'avance.

Pied de page des forums

Propulsé par FluxBB