Vous n'êtes pas identifié(e).
ok merci une petite question
a la place je mets $R pour parametrer les schemas ?
for s in `echo $r | /usr/local/pgsql/bin/pg_dump bd -Ft -x -O -n $r -U user > /home/moi/$r.tar
merci
#!/bin/sh
r='select nspname from pg_namespace where nspname ;
for s in `echo $r | /usr/local/pgsql/bin/pg_dump bd -Ft -x -O -n $r -U user > /home/moi/$r.tar
`
do echo $s;
done;
j'ai fait le script mis dans .sh il me sort echo $r|psql --tuples-only ???
merci
bonjour je cherche un petit script
en .sh qui parcours tous les schema d'une base de donnée
et qui lance /usr/local/pgsql/bin/pg_dump bd -Fc -x -O -t schemax.* -U mich > /home/mich/schemax.gz
comment fait t'on
merci
les schemas ne dependent pas des uns et des autres
ok pour cela /usr/local/pgsql/bin/pg_dump bd -Fc -x -O -t schema2.* -U mich > /home/mich/schema2.gz
merci
/usr/local/pgsql/bin/pg_dump bd -Fc -x -O -t schema2.* -U mich > /home/mich/schema2.tar.gz
comme ca ?
merci de confirmer
@+
ok merci
tache1
/usr/local/pgsql/bin/pg_dump bd -Ft -x -O -t schema1.* -U mich > /home/mich/schema1.tar
gzip schema1.tar schema1.tar.gz
tache2
/usr/local/pgsql/bin/pg_dump bd -Ft -x -O -t schema2.* -U mich > /home/mich/schema2.tar
gzip schema1.tar schema2.tar.gz
tache3
/usr/local/pgsql/bin/pg_dump bd -Ft -x -O -t schema3.* -U mich > /home/mich/schema3.tar
gzip schema1.tar schema3.tar.gz
je voudrez creer un script shell ou une autre facon peut etre
quand la tache 1 est fini on accede a la tache2
quand la tache 2 est fini on accede a la tache3
y 'a t'il une methode
merci encore
ok merci
peut tu me confirmer
dump linux qui se faisait en local sur le serveur
/usr/local/pgsql/bin/pg_dump bd -Ft -x -O -t cad.* -U mich
qui marche trés bien
je l'ai retranscris en windows au format custom (gzip) que l'on m'a demandé et de ma machine
j'ai rajouté -x -O comme en dessus
pg_dump.exe --host xx.xx.xx.xx --port 5432 --username mich --format custom --verbose --file "cad_svg" -x -O --schema \"cad\" bd
pause ""
demande confirmation
ca a l'air correct ??
car aprés mon collegue va prendre mon dump windows et faire la restauration sous linux
avec la commande
pg_restore -v -U postgres -d bd /Users/g/cad_svg (format gzip)
merci
pgdump sous windows OK
et sous linux avec le pg_restore je ne vais pas avoir d'erreur ?
merci
merci gleu !!
pg_dump.exe --host xx.xx.xx.xx --port 5432 --username hubert --format custom --verbose --file "zen_svg" --schema \"zen\" base
comment puis je avoir le format gzip de sortie
genre
pg_dump.exe --host xx.xx.xx.xx --port 5432 --username hubert --format gzip --verbose --file "zen_svg.gz" --schema \"zen\" base
merci
je l'ai sur la 8.2
SELECT current_query from pg_stat_activity;
mais comment je gere le (pg_backend_pid());
merci
pour la 8.4 ca marche
Code:
CREATE OR REPLACE FUNCTION fonction_test()
RETURNS text AS
$BODY$DECLARE
pa text;
BEGIN
SELECT current_query INTO pa from pg_stat_get_activity(pg_backend_pid());
RETURN pa;
END$BODY$
LANGUAGE 'plpgsql' VOLATILE;
mais sur la 8.2 cette fonction ne marche pas
ERROR: function pg_stat_get_activity(integer) does not exist
LINE 1: SELECT current_query from pg_stat_get_activity(pg_backend_pid(...
j'ai pg_stat_activity mais pas le champ current query ? comme faire merci
oui ca n'a pas d'importance ,
je viens de faire les tests c'est OK
je te remercie beaucoup
ce forum est super !!
A bientot pour de nouvelles avntures postgres
Mich
Guillaume,
ok merci ca m'embete un peu j'aurez aimé qui il y 'ai un update
si tu as 1000 enregistrements , et que je demande un update sur ces lignes
il va me mettre 1000 ligne updates alors que 1 update aurez suffit
FOR EACH STATEMENT serez pas mieux ?
merci
fait encore un insert puis un update tu verras il ya a 2 updates a la suite
merci
zut !!! je reteste pas possible !!!
non non il y avez juste un insert
c'est bizarre je fais un insert dans emp je fais un update dans emp
dans la table audit j'ai un insert puis 2 lignes updates !!!
c'est ok
lorsque j'insere il y a un enregistrements dans la table audit ok
et lorsque je fait un update il y a 2 enregistrements update dans la table audit
c'est pas FOR EACH ROW du trigger ?
merci
CREATE OR REPLACE FUNCTION FCT_RECUP_REQUETE()
RETURNS text AS
$BODY$DECLARE
pa text;
BEGIN
SELECT current_query into pa from pg_stat_get_activity(pg_backend_pid());
RETURN pa;
END$BODY$
LANGUAGE 'plpgsql' VOLATILE;
CREATE OR REPLACE FUNCTION FCT_RECUP_CLIENT_ADDR()
RETURNS text AS
$BODY$DECLARE
pa text;
BEGIN
SELECT client_addr from into pa pg_stat_get_activity(pg_backend_pid());
RETURN pa;
END$BODY$
LANGUAGE 'plpgsql' VOLATILE;
/* test
insert into emp values ('mich',12);
update emp set libelle= 15;
select * from emp;
CREATE TABLE emp(
id text,
libelle integer
);
CREATE TABLE audit(
typ_operation char(1) NOT NULL,
Date_Systeme timestamp NOT NULL,
id_utilisateur text NOT NULL,
Nom_table text,
requete text,
client_addr text
);
CREATE OR REPLACE FUNCTION fct_audit() RETURNS TRIGGER AS $audit$
BEGIN
--
-- Ajoute une ligne dans emp_audit pour refléter l'opération réalisée
-- sur emp,
-- utilise la variable spéciale TG_OP pour cette opération.
--
IF (TG_OP = 'DELETE') THEN
INSERT INTO audit SELECT 'D', now(), user,TG_RELNAME,FCT_RECUP_REQUETE(),FCT_RECUP_CLIENT_ADDR();
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO audit SELECT 'U', now(), user,TG_RELNAME,FCT_RECUP_REQUETE(),FCT_RECUP_CLIENT_ADDR();
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit SELECT 'I', now(), user,TG_RELNAME,FCT_RECUP_REQUETE(),FCT_RECUP_CLIENT_ADDR();
RETURN NEW;
END IF;
RETURN NULL; -- le résultat est ignoré car il s'agit d'un trigger AFTER
END;
$audit$ language plpgsql;
CREATE TRIGGER trg_audit
AFTER INSERT OR UPDATE OR DELETE ON emp
FOR EACH ROW EXECUTE PROCEDURE fct_audit();
merci marc encore super
pour le trigger genre drop table create table create role le gere t'il
ou comment faut t'il contourner
merci
ok les posts sont arrivés avant mon dernier message j'y reflechis
la methode de marc je vais la tester
et wilka merci j'y reflechis
je vais mieux formuler ma demande ce n'est pas clair
est ce possible de concatener tous les paramétres OLD.*,new.* lors d'un insert ou update ou delete
et de les mettre dans un champ de type text tous_parametre dans la table emp_audit ?
OLD.* et NEW.* sont des record donc surement je peux patiner ce record pour recuperer
tous les enregistrements :
exemple si je fais insert into emp values ('hubert',12);
dans tous_parametre =' hubert,12'
Merci
CREATE TABLE emp (
nom_employe text NOT NULL,
salaire integer
);
drop TABLE emp_audit;
CREATE TABLE emp_audit(
operation char(1) NOT NULL,
tampon timestamp NOT NULL,
id_utilisateur text NOT NULL,
nom_employe text NOT NULL,
salaire integer,
NOM_TABLE text,
tous_parametre TEXT,
);
CREATE OR REPLACE FUNCTION audit_employe() RETURNS TRIGGER AS $emp_audit$
BEGIN
--
-- Ajoute une ligne dans emp_audit pour refléter l'opération réalisée
-- sur emp,
-- utilise la variable spéciale TG_OP pour cette opération.
--
IF (TG_OP = 'DELETE') THEN
INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*,TG_RELNAME;
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO emp_audit SELECT 'U', now(), user, NEW.*,TG_RELNAME;
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO emp_audit SELECT 'I', now(), user, NEW.*,TG_RELNAME;
RETURN NEW;
END IF;
RETURN NULL; -- le résultat est ignoré car il s'agit d'un trigger AFTER
END;
$emp_audit$ language plpgsql;
CREATE TRIGGER emp_audit
AFTER INSERT OR UPDATE OR DELETE ON emp
FOR EACH ROW EXECUTE PROCEDURE audit_employe();
drop TRIGGER emp_audit on emp;
Bonjour
1) 1ere question
J'aimerez dans la table emp_audit creer un champ marequete de type text
et lorsque j'insere un enregistrement exemple insert into values emp ('hubert',12)
dans ma table emp_audit j'ai
operation I ok
tampon heure courante ok
id_utilisateur postgres ok
nom_employe hubert ok,
salaire 12
marequete ici "insert into values emp ('hubert',12)" possible ?
Merci et bonne année a tous
CREATE TABLE emp (
nom_employe text NOT NULL,
salaire integer
);
CREATE TABLE emp_audit(
operation char(1) NOT NULL,
tampon timestamp NOT NULL,
id_utilisateur text NOT NULL,
nom_employe text NOT NULL,
salaire integer,
marequete text
);
CREATE OR REPLACE FUNCTION audit_employe() RETURNS TRIGGER AS $emp_audit$
BEGIN
--
-- Ajoute une ligne dans emp_audit pour refléter l'opération réalisée
-- sur emp,
-- utilise la variable spéciale TG_OP pour cette opération.
--
IF (TG_OP = 'DELETE') THEN
INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*;
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO emp_audit SELECT 'U', now(), user, NEW.*;
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO emp_audit SELECT 'I', now(), user, NEW.*;
RETURN NEW;
END IF;
RETURN NULL; -- le résultat est ignoré car il s'agit d'un trigger AFTER
END;
$emp_audit$ language plpgsql;
CREATE TRIGGER emp_audit
AFTER INSERT OR UPDATE OR DELETE ON emp
FOR EACH ROW EXECUTE PROCEDURE audit_employe();