Vous n'êtes pas identifié(e).
Merci Super,
j'ai essayé et bien évidement çà a marché.
J'avais lu effectivement sur la doc du copy la différence des deux mais je n'avais pas pensé à çà.
Merci beaucoup à vous.
Bonjour à tous !
Il me faut exécuter un copy to d'un select mais j'ai un problème au niveau de l'utilisateur au moment de la création du fichier.
Je suis logué en gilou et j'exécute :
psql -c "copy (select nm_soc_soc from societaire where id_soc = 100) to '/home/gilou/soc.csv' with delimiter ';'" -h 192.168.1.114 socaf -p 4040 -U gilou
et en retour j'obtiens :
ERREUR: n'a pas pu ouvrir le fichier « /home/gilou/soc.csv » en écriture : Permission non accordée.
Je suis bien dans le dossier /hmoe/gilou pourtant.
Je cherche un peu et j'essaie de donner des droits plus étendus sur le dossier (777 comme çà j'isole les problèmes de droits) et je m'apperçois qu'en fait le fichier
crée en sortie appartient à l'utilisateur postgres.?
Mon pb donc si quelqu'un aurait une piste : comment dois-je procéder pour que le résultat du copy soit associé à l'utilisateur gilou ????
J'ai regardé la doc sur COPY TO /FROM mais pas de mention de user.
Merci par avance.
Merci encore
juste pour dire, en suivant les conseils et en mettant tout dans une seule et grosse requete le tps d'exécution tombe, que dis-je : CHUTE à 14 secondes....... ;-)
OUI
en fait c ce que je voulais dire ...... mais pas comme il le fallait
merci encore
Tout d'abord merci à vous,
on est donc d'accord mieux vaut une procédure très longue que plusieures petites fonctions dès lors que l'on peut tout réaliser en sql...
Merci encore
Bonjour à tous et meilleurs voeux pour 2011 ......
Voilà, je dois réaliser des écritures d'à nouveaux et pour ce faire je dispose de quatres fonction comme suit
1) Celle en entrée qui donne tous les societaires consernés :
CREATE OR REPLACE FUNCTION parcours_plancomptable(annee integer, idutilisateur integer)
RETURNS integer AS
$BODY$
DECLARE
nbLigne integer; -- nombre de lignes crées pour un plan comptable
nbLigneTotal integer :=0; -- nombre de lignes totales crées pour l'execution du script
soctaire RECORD; -- Ligne contenant un societaire
idNaturePiece integer := 9; -- id nature piece : A nouveau
BEGIN
-- Création pîece comptable --
INSERT INTO piece_comptable(id_pct, id_npc, bl_valide_pct)
VALUES (nextval('piece_comptable_id_seq'), idNaturePiece, false);
FOR soctaire IN (
SELECT distinct soc.id_plc FROM societaire soc
JOIN ligne_ecriture le ON soc.id_plc = le.id_plc
WHERE st_etat_soc IN ('SP', 'DO', 'EX') AND nm_soc_soc <10000
AND EXTRACT(YEAR FROM le.d_dateecriture_lec) = annee - 1 AND id_grp not between 36 and 51
ORDER BY soc.id_plc ASC)
LOOP
EXECUTE 'SELECT parcours_groupe(' || soctaire.id_plc || ', currval(''piece_comptable_id_seq''), ' || annee || ', ' || idUtilisateur || ')' INTO nbLigne;
nbLigneTotal := nbLigneTotal + nbLigne;
END LOOP;
RETURN nbLigneTotal;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION parcours_plancomptable(integer, integer) OWNER TO postgres;
2 ) une pour les groupes comptables
CREATE OR REPLACE FUNCTION parcours_groupe(idplancomptable integer, idpiececomptable bigint, annee integer, idutilisateur integer)
RETURNS integer AS
$BODY$
DECLARE
solde numeric(18,2) := 0.00; -- variable récupéré de la fonction solde_groupe()
grp RECORD; -- Ligne contenant un groupe pour tout les groupes sauf (7,8,9,10,11,12)
ligneEcriture RECORD; -- Ligne contenant un groupe uniquement pour les groupes (7,8,9,10,11,12)
cotis RECORD; -- Ligne contenant un groupe uniquement pour les groupes (22,23,24,25,26,27)
txt text :=''; -- log
dateEcriture date; -- Date avec annee courante
lbl text :=''; -- libelle de la ligne ecriture
debit numeric(18,2) := 0.00; -- Debit pour la ligne écriture
credit numeric(18,2) := 0.00; -- Debit pour la ligne ecriture
nbLigne integer :=0; -- Compte le nombre de ligne crée
idJournal integer := 3; -- Identifiant du journal : A NOUVEAU
anneeN1 integer := 0; -- Annee + 1
anneeSolde integer := 0; -- Annee - 1
trancheGar integer := 0; -- Tranche garantie
idJournalCotis integer := 16; -- Identifiant du journal : COTISATION EXERCICE
lblCotisation text := ''; -- Libelle de la ligne écriture cotisation
soldeCotis numeric(18,2) := 0.00; -- Solde d'un des groupes COTIS_
debitCotis numeric(18,2) := 0.00; -- Debit d'un des groupes COTIS_
creditCotis numeric(18,2) := 0.00; -- Credit d'un des groupes COTIS_
dateEcritureCotis date; -- Date pour les lignes écriture des groupes COTIS_
groupeCotis integer := 66; -- Groupe COMPTABILITE GENERALE
totalCotis numeric(18,2) := 0.00; -- Total de tout les soldes groupe des cotisations
BEGIN
-- Déclaration des variables --
anneeN1 = annee + 1; -- Annee + 1
anneeSolde = annee - 1; -- Annee -1
dateEcriture := to_date(annee || '-01-01', 'YYYY-MM-DD'); -- Date au 01/01/anneeCourante
lbl := 'A NOUVEAU AU 1/1/' || annee; -- Creation libelle
lblCotisation := 'COTISATION EXERCICE ' || anneeSolde; -- Création libelle cotisation
dateEcritureCotis := to_date(anneeSolde || '-12-31', 'YYYY-MM-DD'); -- Date au 31/12/anneeCourante -1
-- Génération des lignes écritures --
--execute la fonction solde_groupe pour tous les groupes hormis ceux de fdg, de HB et de cotis ainsi que les fonds restituables
FOR grp IN (SELECT g.id_grp
FROM groupe g
WHERE g.id_grp NOT IN (7,8,9,10,11,12,13,22,23,24,25,26,27) -- 7 => FDG_S - 8 => FDG_T - 9 => FDG_G - 10 => FDG_P - 11 => FDG_M - 12 => FDG_NP -
AND g.id_grp NOT BETWEEN 36 AND 51 ) -- 13 => FondsRest - 22 => COTIS_S - 23 => COTIS_T - 24 => COTIS_G - 25 => COTIS_P -
-- 26 => COTIS_M - 27 => COTIS_EX_NC
LOOP
EXECUTE 'SELECT solde_groupe(' || grp.id_grp || ', ' || anneeSolde || ', ' || idPlanComptable || ')' INTO solde;
IF (solde<>0 OR solde <> NULL) THEN -- Si solde != 0 alors injecte une ligne
IF (solde > 0) THEN
debit := solde;
credit := 0.00;
ELSE
debit := 0.00;
credit := ABS(solde);
END IF;
INSERT INTO ligne_ecriture(
id_lec, id_pct, id_grp, id_plc, id_jnx, id_bqe, d_dateecriture_lec,
st_lbl_lec, nm_debit_lec, nm_credit_lec, d_datesaisie_lec, nm_tranchegar_lec,
st_anneegar_lec, nm_numremise_lec, nm_numcheque_lec, id_usr,
bl_transfere_lec)
VALUES (nextval('ligne_ecriture_id_seq'), idPieceComptable, grp.id_grp, idPlanComptable, idJournal, null, dateEcriture,
lbl, debit, credit, NOW(), 0,
annee, null, null, idUtilisateur,
false);
nbLigne := nbLigne + 1;
--RAISE NOTICE 'Log pour le groupe % avec le plan comptable % (solde %) ', grp.id_grp, idPlanComptable, solde;
END IF;
END LOOP;
-- Pour chaque ligne ecriture dont l'année correspond à l'année courante et au groupe de Fonds de Garantie
FOR ligneEcriture IN (SELECT le.id_grp, le.nm_debit_lec, le.nm_credit_lec, le.nm_tranchegar_lec, st_anneegar_lec FROM ligne_ecriture le
WHERE (EXTRACT(YEAR FROM le.d_dateecriture_lec)) = '2010'
AND le.id_plc = idPlanComptable
AND le.id_grp IN (7,8,9,10,11,12)) -- 7 => FDG_S - 8 => FDG_T - 9 => FDG_G - 10 => FDG_P - 11 => FDG_M - 12 => FDG_NP
LOOP
EXECUTE 'SELECT solde_groupe(' || grp.id_grp || ', ' || anneeSolde || ', ' || idPlanComptable || ')' INTO solde;
IF (solde<>0 OR solde <> NULL) THEN
IF (ligneEcriture.nm_tranchegar_lec <> null) THEN
trancheGar := ligneEcriture.nm_tranchegar_lec;
ELSE
trancheGar := 0;
END IF;
INSERT INTO ligne_ecriture(
id_lec, id_pct, id_grp, id_plc, id_jnx, id_bqe, d_dateecriture_lec,
st_lbl_lec, nm_debit_lec, nm_credit_lec, d_datesaisie_lec, nm_tranchegar_lec,
st_anneegar_lec, nm_numremise_lec, nm_numcheque_lec, id_usr,
bl_transfere_lec)
VALUES (nextval('ligne_ecriture_id_seq'), idPieceComptable, ligneEcriture.id_grp, idPlanComptable, idJournal, null, dateEcriture,
lbl, ligneEcriture.nm_debit_lec, ligneEcriture.nm_credit_lec, NOW(), trancheGar,
ligneEcriture.st_anneegar_lec, null, null, idUtilisateur,
false);
nbLigne := nbLigne + 1;
--RAISE NOTICE 'Log pour le groupe % avec le plan comptable % (solde %): %', grp.id_grp, idPlanComptable, solde, txt;
END IF;
END LOOP;
-- On calcul le solde total pour les groupes cotisation. Si le solde est négatif erreur
EXECUTE 'SELECT solde_groupeCotis(' || idPlanComptable || ', '|| annee ||')' INTO totalCotis;
IF (totalCotis > 0) THEN
RAISE EXCEPTION 'ERREUR la somme des soldes groupes des cotisations est négatif';
RETURN nbLigne;
END IF;
-- Pour les groupes de cotisation : COTIS_S, COTIS_T, COTIS_G, COTIS_P, COTIS_M, COTIS_EX_NC
FOR cotis IN (SELECT le.id_grp, le.nm_debit_lec, le.nm_credit_lec, le.nm_tranchegar_lec, st_anneegar_lec FROM ligne_ecriture le
WHERE (EXTRACT(YEAR FROM le.d_dateecriture_lec)) = annee
AND le.id_plc = idPlanComptable
AND le.id_grp IN (22,23,24,25,26,27)) -- 22 => COTIS_S - 23 => COTIS_T - 24 => COTIS_G - 25 => COTIS_P - 26 => COTIS_M - 27 => COTIS_EX_NC
LOOP
EXECUTE 'SELECT solde_groupe(' || cotis.id_grp || ', ' || anneeSolde || ', ' || idPlanComptable || ')' INTO soldeCotis;
IF (soldeCotis < 0) THEN
debitCotis := soldeCotis;
creditCotis := 0.00;
ELSE
debitCotis := 0.00;
creditCotis := ABS(soldeCotis);
END IF;
INSERT INTO ligne_ecriture(
id_lec, id_pct, id_grp, id_plc, id_jnx, id_bqe, d_dateecriture_lec,
st_lbl_lec, nm_debit_lec, nm_credit_lec, d_datesaisie_lec, nm_tranchegar_lec,
st_anneegar_lec, nm_numremise_lec, nm_numcheque_lec, id_usr,
bl_transfere_lec)
VALUES (nextval('ligne_ecriture_id_seq'), idPieceComptable, cotis.id_grp, idPlanComptable, idJournalCotis, null, dateEcritureCotis,
lblCotisation, debitCotis, creditCotis, NOW(), 0,
anneeSolde, null, null, idUtilisateur,
false);
nbLigne := nbLigne + 1;
-- Contre partie
INSERT INTO ligne_ecriture(
id_lec, id_pct, id_grp, id_plc, id_jnx, id_bqe, d_dateecriture_lec,
st_lbl_lec, nm_debit_lec, nm_credit_lec, d_datesaisie_lec, nm_tranchegar_lec,
st_anneegar_lec, nm_numremise_lec, nm_numcheque_lec, id_usr,
bl_transfere_lec)
VALUES (nextval('ligne_ecriture_id_seq'), idPieceComptable, groupeCotis, idPlanComptable, idJournalCotis, null, dateEcritureCotis,
lblCotisation, 0.00, totalCotis, NOW(), 0,
anneeSolde, null, null, idUtilisateur,
false);
nbLigne := nbLigne + 1;
END LOOP;
RETURN nbLigne;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION parcours_groupe(integer, bigint, integer, integer) OWNER TO postgres;
3 ) une autre pour le solde des groupes permettant de ne générer des ecritures que pour les groupes avec un solde non null et différent de 0
CREATE OR REPLACE FUNCTION solde_groupe(idgroupe integer, annee integer, idplancomptable integer)
RETURNS numeric AS
$BODY$
DECLARE
solde numeric(18,2) := 0.00;
ecriture RECORD;
BEGIN
SELECT sum(le.nm_debit_lec) as sDebit, sum(le.nm_credit_lec) as sCredit
INTO ecriture FROM ligne_ecriture le
WHERE le.id_grp = idGroupe
AND le.id_plc = idPlanComptable
AND EXTRACT(YEAR FROM le.d_dateecriture_lec) = annee;
solde = ecriture.sDebit -ecriture.sCredit; -- Calcule SOMME(credit) - SOMME(debit)
--RAISE NOTICE 'solde = % ', solde;
IF (solde IS NOT NULL) THEN
RETURN solde;
ELSE
RETURN 0.00;
END IF;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION solde_groupe(integer, integer, integer) OWNER TO postgres;
4) une dernière spécifique à une catégorie de groupe comptable
CREATE OR REPLACE FUNCTION solde_groupecotis(idplancomptable integer, annee integer)
RETURNS numeric AS
$BODY$
DECLARE
soldeGroupe numeric(18,2) := 0.00; -- Solde du groupe
soldeTotal numeric(18,2) := 0.00; -- Solde total de tout les groupes
anneeSolde integer := 0; -- Annee - 1
cotis RECORD;
BEGIN
anneeSolde := annee - 1;
FOR cotis IN (SELECT le.id_grp, le.nm_debit_lec, le.nm_credit_lec, le.nm_tranchegar_lec, st_anneegar_lec FROM ligne_ecriture le
WHERE (EXTRACT(YEAR FROM le.d_dateecriture_lec)) = anneeSolde
AND le.id_plc = idPlanComptable
AND le.id_grp IN (22,23,24,25,26,27)) -- 22 => COTIS_S - 23 => COTIS_T - 24 => COTIS_G - 25 => COTIS_P - 26 => COTIS_M - 27 => COTIS_EX_NC
LOOP
EXECUTE 'SELECT solde_groupe(' || cotis.id_grp || ', ' || anneeSolde || ', ' || idPlanComptable || ')' INTO soldeGroupe;
soldeTotal := soldeTotal + soldeGroupe;
END LOOP;
RETURN soldeTotal;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION solde_groupecotis(integer, integer) OWNER TO postgres;
VOilà. Mon problème, vous aurez compris vu le sujet serait de pouvoir optimiser le traitement.
Pour 7770 societaire concernés et 339494 lignes dans ma table d'écriture, mon traitement n'est toujours pas terminé après plus de trois heures.
Pourriez - vous me donner des astuces notement sur le fait d'apeler les fonctions à l'intérieur d'autres fonctions et ce que çà coute en tps et me dire si le mieux ne serait pas de faire tout le traitement dans une seule fonction.
Merci bcp à tous et encore plus à ceux qui pourraient m'aider.
Je vais tenter çà et vous donne mon retour.
Nbre de lignes :
select count(id_lec ) from ligne_ecriture = 333270
Merci
Merci de nouveau pour votre réponse.
Alors j'avoue déjà dans un premier temps ne pas connaître le terme déferrable ;-) mais je vais voir à quoi il correspond.
A part celà, oui je pourrais faire un DROP de la contrainte une fois que les utilisateurs s'en vont l'informatique profite pour ce genre de choses ...
Je vais jeter un oeil sur le lien que vous m'avez mis, merci. (je ne suis toujours pas en 8.4 mais j'espère y passer avant la fin de l'année - A moins que ce soit un saut à la 9 ???? )
MERCI encore à vous.
Merci pour votre réponse,
oui effectivement j'avais bien assimilé le fait qu'avec les séquences je ne pouvais éviter ce problème de trous.
Par contre, ce n'est pas vraiment génant pour moi, je m'explique : c'est une fonction que j'ai mise en place qui s'exécute sur un cron qui me crée ces trous mais je vais la modifier en fait.
"Il est possible de renuméroter à posteriori, en SQL, si c'est ce que vous souhaitez faire."
Oui c'est mon souci pour l'instant; savoir comment je pourrais renuméroter les lignes dans les deux tables après quoi je réinitialiserai ma séquence avec un setval(max(id_pct) ).
Bonjour à tous,
je voudrais savoir s'il existe un moyen de récupérer les id non utilisés correspondant à une séquence :
j'ai une table pièce_comptable avec comme clé primaire id_pct qui correspond à la séquence piece_comptable_id_seq.
Dans ma table ligne_ecriture je retrouve mon id_pct comme clé étrangère, la contrainte étant définie ainsi :
CONSTRAINT fk_ligne_ec_rlsh_129_piece_co FOREIGN KEY (id_pct)
REFERENCES piece_comptable (id_pct) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE,.
A aujourd'hui je me retrouve avec des bonds de 4500 lignes dans la table piece_comptable.
Existe-t-il un moyen en sql de refaire une numérotation sans "trous"... dans les deux tables ?
Si quelqu'un a une idée, je le remercie par avance.
Ah d'accord merci beaucoup et si c'est çà vous me rassurez beaucoup.
Je vais essayer de trouver du côté des mises à jour système dans ce cas car je n'ai pas changé les paramètres de postgres récement mais par contre j'ai souvent redémarré à cause de mon programme de transfert (bascule de sqlServer à Postgres en cours actuellement ... )
Merci encore
Merci pour votre réponse.
Vous ne voyez que çà comme possibilité alors je dois peut etre me tourner vers un probleme materiel (je ne sais pas ), parce que a moins que ce soit fait par l'exterieur je suis le seul a acceder au serveur.
Celà ne peut pas venir de l'appli ( en java avec richfaces et un serveur tomcat)?
Merci en tous cas
Merci à vous Guillaume.
Par contre auriez-vous une idée de piste pour savoir ce qui a pu se passer en sachant que ce serveur tourne comme çà depuis plusieurs mois déjà ?
Merci par avance.
Bonjour à tous.
Voilà j'ai eu un souci avec mon serveur dans la semaine ( où j'étais en vacances ) et à priopri celà est du a ma configuration postgres.
Quand je veux redémarrer j'ai ce message d'erreur
Starting PostgreSQL 8.3 database server: mainThe PostgreSQL server failed to start. Please check the log output: 2010-05-03 15:16:29 CEST FATAL: n'a pas pu créer le segment de mémoire partagée : Argument invalide 2010-05-03 15:16:29 CEST DÃTAIL: L'appel système qui a échoué était shmget(clé=4040001, taille=570335232, 03600). 2010-05-03 15:16:29 CEST ASTUCE : Cette erreur signifie habituellement que la demande de PostgreSQL pour un segment de mémoire partagée a dépassé le paramètre SHMMAX de votre noyau. Vous pouvez soit réduire la taille de la requête soit reconfigurer le noyau avec un SHMMAX plus important. Pour réduire la taille de la requête (actuellement 570335232 octets), réduisez le paramètre de shared_buffers de PostgreSQL (actuellement 65536) et/ou le paramètre max_connections (actuellement 103). Si la taille de la requête est déjà petite, il est possible qu'elle soit moindre que le paramètre SHMMIN de votre noyau, auquel cas, augmentez la taille de la requête ou reconfigurez SHMMIN. La documentation de PostgreSQL contient plus d'informations sur la configuration de la mémoire partagée. failed!
failed!
je suis désolé de mettre çà comme çà mais c'est probablement le mieux que je puisse faire pour m'expliquer..
Est-ce que quelqu'un aurait une idée s'il vous plait sur comment résoudre le souci( encore que avec la doc officielle je pense que je pourrais y arriver), mais surtout me donner des pistes pour voir ce qui a pu se passer .
Je vous remercie par avance.
gilou974
Bonjour et un grand MERCI monsieur Cousin
je n'avais pas parcouru la doc assez en avant pour ces caractères d'échappement fort utiles.
Merci bcp
Si j'essaie comme çà :
select regexp_replace(regexp_replace(convert_from('10 336.00','LATIN1'),'.00','' ),' ','') Avec valeur retournée --> résultat "10Â 336"
select regexp_replace(regexp_replace(convert_from('10 336.00','LATIN1'),'.00','' ),' ','') --> résultat "10336"
on voit bien là une différence ??
Si j'essaie comme çà :
select regexp_replace(regexp_replace(convert_from('10 336.00','UTF8'),'.00','' ),' ','') Avec valeur retournée --> résultat 8 167
select regexp_replace(regexp_replace(convert_from('10 336.00','UTF8'),'.00','' ),' ','') --> résultat 8167
rien ne change en fait ??
Pas l'encodage ? mais quoi alors ?
Bonjour à tous.
J'ai un pb qui semble venir de l'encodage mais je ne sais pas trop comment vérifier s'il s'agit bien de celà et si "oui" comment le corriger.
Voilà je veux exécuter :
SELECT
--nextval(provisionnement_id_seq)AS id_pro,
id_soc,
tca AS id_tca,
id_tga,
regexp_replace(nm_soc,' ',''),
regexp_replace(regexp_replace( trim(nm_soc), '\\.00',''),' ',''),
substring(regexp_replace(regexp_replace( nm_soc, '.00',''),' ','') FROM '[0-9]+' )AS nm_soc_soc,
nm_soc,
d_conseil, type_prov, tga, montant_prov, id_pim
FROM provisionimport pim
LEFT JOIN societaire soc ON soc.nm_soc_soc = substring( nm_soc FROM '[0-9]+' )::integer
JOIN type_garantie tga ON pim.tga = tga.st_type_tga
Mais pour certaine donnée je n'arrive pas à me débarasser de l'espace dans mon nombre.
Si je copie colle la valeur retournée par la requête et que je teste:
select regexp_replace(regexp_replace('8 167.00','.00','' ),' ','') Avec valeur retournée --> résultat 8 167
Alors que si je tape manuellement:
select regexp_replace(regexp_replace('8 167.00','.00','' ),' ','') --> résultat 8167
Quelqu'un aurait -il un idée svp.
Merci bcp pour l'info sur la 8.3 Marc Cousin je vais de ce pas tester parce que je suis justement encore dans le même cas que samedi.
Merci
Merci pour la réponse et désolé de la mienne pour sa nature tardive.
Oui je me doutais bien que ce n'était pas une bonne idée de faire un Kill mais je devais faire au plus vite pour avancer.
Sinon pour la 8.4 je n'ai pas encore fait la bascule pour l'instant donc je garde la commande que vous m'avez donnée de côté pour la prochaine fois.
Merci en tout cas et encore désolé de ne répondre que maintenant.
Bon j'ai trouvé une solution à la radical g fait un kill sur tous les PID associés à idle in transaction.
Merci quand même de me répondre si quelqu'un à une solution plus élégante.
Bonjour à tous.
VOilà je suis en train d'effectuer un programme de transfert de données en C++ et il me faudrait faire un DROP sur ma base. Problème il semblerait que lors de mes test j'ai mis des verrous sur la base (probablement des transactions implicitement crées mais pas libérées sur plantage de mon exe ).
Toujurs est-il que si je fais un ps -fu j'obtiens :
postgres@testserver:/etc/init.d$ ps -fu postgres
UID PID PPID C STIME TTY TIME CMD
postgres 4145 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(58826) idle in transaction
postgres 4149 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(58839) idle in transaction
postgres 4172 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(58874) idle in transaction
postgres 4178 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(44733) idle in transaction
postgres 4201 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(44776) idle in transaction
postgres 4207 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(44783) idle in transaction
postgres 4502 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(44812) idle in transaction
postgres 4844 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(44824) idle in transaction
postgres 4846 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(44828) idle in transaction
postgres 5584 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(53866) idle in transaction
postgres 12899 1 0 2009 ? 00:09:37 /usr/lib/postgresql/8.3/bin/postgres -D /var/lib/postgresql/8.3/mai
postgres 12901 12899 0 2009 ? 00:00:58 postgres: writer process
postgres 12902 12899 0 2009 ? 00:00:35 postgres: wal writer process
postgres 12903 12899 0 2009 ? 00:05:30 postgres: autovacuum launcher process
postgres 12904 12899 0 2009 ? 00:04:59 postgres: stats collector process
postgres 19494 12899 0 14:16 ? 00:00:00 postgres: pgsql postgres 192.168.1.90(3438) idle
postgres 20289 18682 0 14:22 pts/0 00:00:00 su postgres
postgres 20290 20289 0 14:22 pts/0 00:00:00 bash
postgres 21024 12899 0 14:25 ? 00:00:00 postgres: pgsql socaf 192.168.1.90(3450) idle
postgres 22646 12899 0 14:39 ? 00:00:00 postgres: pgsql socaf 192.168.1.90(3584) idle
postgres 24151 20290 0 14:48 pts/0 00:00:00 ps -fu postgres
postgres 25576 12899 0 Jan12 ? 00:00:03 postgres: postgres socaf 192.168.1.114(36412) idle in transaction
postgres 28355 12899 0 Jan12 ? 00:00:00 postgres: postgres socaf 192.168.1.114(39589) idle in transaction
Quelqu'un pourrait-il me guider pour libérer toutes les connections à la base.
Merci d'avance
Désolé pas revenu sur mon post depuis Merci encore à tous pour vos réponses et meilleurs voeux pour cette nouvelle année
En résumé même si le nombre de table et d'alias (du à l'utilisation de mêmes tables plusieures fois) et donc de jointure il vaut mieux ne pas imbriquer de vues du tout ou seulement éviter les vues avec des filtres qui se croiseraient ????
Merci
Merci à vous mais alors après c'est encore plus long à lire après ???
Je suis sûr que tous les gens du forum sont de bonne volonté mais je me dis que c'est de l'abus de ma part quand je vois le résultat à moins bien entendu ( et c'est ce que je pense que vous, avec l'habitude vous le voyez tout de suite ).
En tout cas on m'alertera à ce moment j'espère.
Alors je vais essayer de comprendre comment me servir du EXPLAIN ANALYSE.
Merci