Vous n'êtes pas identifié(e).
Bonjour,
je cherche à déployer postgresql14 sur une machine Ubuntu 22.04 LTS et je galère beaucoup sur le rôle et le playbook .
Quelqu'un pourrait m'aider s'il vous plait ?
Je vous remercie par avance .
I'm trying to deploy postgresql14 on an Ubuntu 22.04 LTS machine and I'm having a lot of trouble with the role and the playbook.
Could someone please help me?
Merci pour cette réponse .
Migration de postgres ancienne version vers postgres nouvelle version avec possibiltés d'augmenter une table ou d'en retrancher une .
Merci encore pour votre aide .
Bonne soirée
Bonsoir les amis .
Je vous remercie par avance . Je cherche une procédure de migration d'une base postgres avec la possibilité de de restaurer les données savegardées dans leur intégralité mais aussi une éventuel évolution des tables.
Auriez-vous s'il vous plait une procédure.
Je suis sous Centos et je n'ai pas de Gui .
Merci pour toute aide et bon week-end
Merci pour la démonstration, elles est claire et je comprends bien votre démarche.
Le soucis que j'ai, c'est que cette table clients ou mangone comme vous l'avez appelé contenait des données et je ne voulais pas au moment de la purge que celle-ci soit ignorées parce que n'ayant pas de date (il n'existait pas de colonne date avant).
Je pense que sans passer par un pg dump et un pg restore qui garantit les "non doublon", il est presque impossible de les éviter.
Pour une table ne contenant aucune cela fonctionne convenablement mais si elle contenait des données et après avoir fait
sql_query "update clients set mise_a_jour =(select DETECTEDLAST from département where oid=_oid and wid=_wid) where mise_a_jour is null;" , les doublons sont inévitables.
Voici mon jeu de tests:
#!/bin/bash
#SCRIPT de sauvegarde de la table clients
#A exécuter en tant que postgres ou via "sudo -u postgres script.sh"
PGPATH="/usr/bin"
QUIET="-q"
#### TODO : VARIABLE A CHANGER SI BESOIN
CPV_DB_NAME="CORTEX" #Nom de la base de données cible
CPV_DB_PORT=5345 #Numéro de port associé au cluster
REST_D="./" #Dossier ou se trouve le .dump
function sql_query(){
sudo -u postgres psql -p "$CPV_DB_PORT" -d "$CPV_DB_NAME" -c "$1"
}
#1)Ajout de colonne dans la table clients
sql_query "Alter table clients add column mise_a_jour date;"
#2)mise en place des données de la colonne MAJ
sql_query "update clients set mise_a_jour =(select DETECTEDLAST from départements where oid=_oid and wid=_wid) where mise_a_jour is null;"
#3)Sauvegarde de la table clients
sudo ./dump_clients.sh
#4)Re-création de la nouvelle table clients
sql_query "alter table clients drop constraint fk723362laad036112";
sql_query "alter table clients rename to première_table_clients";
sql_query "create table clients (_oid int8 not null, _wid int8 not null, tracks_oid int8 not null, tracks_wid int8 not null, mise_a_jour date, primary key (_oid, _wid, tracks_oid, tracks_wid))";
#5)Remplissage de la table clients
sudo -u postgres pg_restore -p $CPV_DB_PORT -d $CPV_DB_NAME -a -F c -t clients --disable-triggers --verbose ./clients.dump
#7)Mise en place du nouvel index
sql_query "create index idx_clients_mise_a_jour on clients(mise_a_jour)" ;
sudo -u postgres psql -p $CPV_DB_PORT -d $CPV_DB_NAME -f ./trigger.sql
Commentaire : lorsque j'execute ce script basé sur la sauvegarde de la table clients, je n'ai aucun doublon.
Lorsque je fais une insertion manuelle sans passer par un dump de cette table, j'ai des doublons de toutes les lignes même au niveau des dates incrémenter dans cette nouvelle colonne .
Mon objectif est de ne pas dumper cet table, donc de ne pas restorer et par conséquent de ne pas avoir de doublons .
Merci par avance
Si je comprends bien,
Je dois . taper cette commande et effectuer la sortie vers un ficher txt ?
sudo -u postgres psql -X -P -p XXXX -d "MA_BASE explain analyze client where enddate <= ‘27/02//2017’::date; >/YY/ZZ.result_explain_analyze.txt
Voici ma fonction Trigger :
REATE OR REPLACE FUNCTION suivi_mise_a_jour()
RETURNS trigger AS
$BODY$
BEGIN
NEW.mise_a_jour:= current_date ;
RETURN NEW ;
END ;
$BODY$
LANGUAGE plpgsql;
Voici mes Triggers:
CREATE TRIGGER Before Insert_clients
BEFORE INSERT ON tracks_transmitter
FOR EACH ROW
EXECUTE PROCEDURE suivi_mise_a_jour();
CREATE TRIGGER BeforeUpdate_clients
BEFORE UPDATE ON tracks_transmitter
FOR EACH ROW
EXECUTE PROCEDURE suivi_mise_a_jour();
Ces 2 triggers fonctionnent correctement car elles remplissent la colonne mise_a_jour.
Mon test pour être précis était d'insérer une nouvelle colonne maj à une de mes tables afin que la purge de cette maj s'effectue sur la base de date (3O jours par exemple). Je précise que cette table contenait déjà des données. J'ai crée une fonction trigger et 2 triggers pour des before update ou before insert. Puisque cette table contenait des données avant, la colonne date était vide pour les données déjà présentes en base.
J'ai lancé la commande update client set maj = (select detectedlast from departement where OID = _OID and WID = _WID) where maj is null;
à ma grande surprise, à chaque insert, j'ai un doublon de chaque ligne.
Le fait d'avoir des doublons me dérrange et je souhaite avoir qu'une entrée.
Je ne sais si j'ai été clair cette fois c-sur le jeu de test ou pas .
Merci en tous cas pour l'aide
En réponse à votre question, l'ai l'habitude de me connecter à la base à la base pour lancer ma commande EXPLAIN ANALYZE, je ne sais pas si la commande psql -c "EXPLAIN ANALYZE ..." ou \o /.../fichier se lance dans la base ou hors de la base .
ma connexion s'effectue via cette commande: sudo -u postgres psql -P XXXX -d "MA_BASE .
à partir d'ou dois-je lancer ma commande ?
J'en prends note pour la suggestion .
J'ai pu régler le problème de la fonction trigger ainsi que les triggers before update et before insert.
Un petit rappel et une petite question pour finir cette expérience.
J'avais créé une colonne sur une table (colonne mise à jour) et créé une fonction trigger et 2 triggers qui à chaque fois qu'il ya un insert ou une mise à jour prend la date du jour et l'insère .
Question : si je pars d'un dump que je restore pas de soucis tout se passe bien pas de doublons. Si j' insère directement ( a la main ) les lignes sont doublées.
Pourquoi postgres se comporte ainsi ?
Comment faire pour ne pas avoir de doublons .
Merci une fois de plus pour votre aide .
Merci pour la réponse .
ce qui qui est bizarre, c'est qu'elle ne renvoie aucun message si ce n'est un retour au prompt de la Base ?
Bonjour,
Je cherche une aide sur un problème de non renvoi de requête, certainement j'ai un problème de syntaxe.
Merci de bien vouloir me corriger s'il vous plait .
Commande:
Explain analyze delete from client where enddate <= ‘27/02//2017’::date;
Merci d'avance
Merci Julien , ça marche
Bonjour,
J'avais juste une question sur une éventuelle la commande "explain analyze".
je suis sur une vmware et je souhaite copier le résultat de ma commande explain analyze.
existe-t il une commande copy explain analyze ?
Si oui quelle est sa syntaxe ?
Merci d'avance
Bonsoir,
Merci pour vos aides. J'ai acquis de nouvelles connaissances sur les fonctions trigger ainsi que ls triggers.
testés, cela renvoie une entière satisfaction excepté juste une amélioration: Impossible de mettre à jour la table 'member' dans la fonction / trigger stockée
Fonction:
CREATE OR REPLACE FUNCTION suivi_mise_a_jour()
RETURNS trigger AS
$BODY$
BEGIN
NEW.mise_a_jour:= current_date ;
RETURN NEW ;
END ;
$BODY$
LANGUAGE plpgsql
Trigger:
CREATE TRIGGER BI_clients
BEFORE INSERT ON clients
FOR EACH ROW
if NEW.mise_a_jour is not null
EXECUTE PROCEDURE suivi_mise_a_jour();
Quelqu'un saurait ou est le problème ?
Merci d'avance
Bonsoir Guillaume ,
Est-ce que tu penses que cette syntaxe est correcte :
function sql_query(){
sudo -u postgres psql -p "$PG_PORT" -d "$PG_DATABASE" -c "$1"
}
Bonjour Sébastien ,
Je viens de voir ta réponse et je te remercie . Je vais argumenté au niveau des problème que cela me pose .
Voici ce que j'ai pu établir comme script d'automatisation mais j'ai des messages d'erreurs au lancement:
Script:
#!/bin/bash
#SCRIPT de sauvegarde de la table clients
#A exécuter en tant que postgres ou via "sudo -u postgres Livrable.sh"
PGPATH="/usr/bin"
QUIET="-q"
#### TODO : VARIABLE A CHANGER SI BESOIN
CPV_DB_NAME="MYDATABASE" #Nom de la base de données cible
CPV_DB_PORT=5333 #Numéro de port associé au cluster
REST_D="/mnt/MYDATABASE/DUMP" #Dossier ou se trouve le .dump
function sql_query(){
postgres -u psql -p "$CPV_DB_PORT" -d "$CPV_DB_NAME" -c "$1"
}
#1)Ajout de colonne mise_a_jour dans la table clients
sql_query "Alter table clients add column mise_a_jour date;"
#2)mise en place des données de la colonne MAJ
sql_query "update clients set mise_a_jour = (select DETECTEDLAST from numéro de carte where oid = _oid and wid = _wid) where mise_a_jour is null;"
#3)Re-création de la nouvelle table client
sql_query "alter table clients drop constraint fk xxxxxxxxxxxxx";
sql_query "alter table clients rename to first_frist clients";
sql_query "create table clients
_oid int8 not null,
_wid int8 not null,
tracks_oid int8 not null,
tracks_wid int8 not null,
mise_a_jour date,
primary key (_oid, _wid, tracks_oid, tracks_wid)";
#4)Remplissage de la table clients
pg_restore -p $CPV_DB_PORT -d $CPV_DB_NAME -a -F c -t clients --disable-triggers --verbose -f /mnt/MYDATABASE/DUMP/clients-a-c.dump
Je sais que toutes ces commandes tapées individuellement en ligne de commande fonctionnent. Lorsque je j'utilise cette fonction elle génére des erreurs du genre "Livrable.sh: ligne 15 $'\302\240 :command introuvable.
La ligne 15 correspond à : postgres -u psql -p "$CPV_DB_PORT" -d "$CPV_DB_NAME" -c "$1"
Voilà les problèmes auxquels je suis confrontés.
Merci d'avance pour l'écoute et le dépannage .
Hey oui Guillaume, C'est là que j'ai un problème, et c'est encore là ou je sollicite le forum pour une aide vraiment précieuse.
Je suis preneur de toute aide dans ce sens .
Merci d'avance
Bonsoir Guillaume,
Merci pour ta réponse . Il est vrai que j'ai testé toutes ces instructions, elles fonctionnent toutes.
Mon problème je veux que la lancement soit automatique et non de façon individuelle. Je veux que la 1ère instruction lance toutes les autres instructions.
Je ne sais pas si je suis clair sans mon projet ?
Je pense que si !
onsoir,
Merci pour cette oreille attentive, merci à ceux qui nous éclairent quand on ne sait plus ou donner de la tête.
Si je suis revenu ce soir, s'est que j'ai un problème que je n'arrive pas à résoudre. Je remercie toutes contribution.
Il s'agit dee scripts qui font appel à des fichiers sql et l'objectif est pour moi de faire un lancement pour tout dérouler .
J'ai vraiment besoin de cette aide.
1) Ajout de nouvelle colonne dans la table "clients"
* Fichier .sql contenant : psql -f
Alter table client add column mise_a_jour date;
2) Mise en place de données dans la table clients
*Fichier .sql contenant : psql -f
update tracks_transmitter set mise_a_jour = (select DETECTEDLAST from client where oid = _oid and wid = _wid) where mise_a_jour is null;
3) Un Pg-dump
#!/bin/bash
#SCRIPT DE SAUVEGARDE DE LA TABLE clients
PGPATH="/usr/bin"
QUIET="-q"
#### TODO : VARIABLE A CHANGER SI BESOIN
CPV_DB_NAME="MYDATABASE" #Nom de la base de données cible
CPV_DB_PORT=5544 #Numéro de port associé au cluster
REST_D="/mnt/MyPC/DUMP" #Dossier ou se trouve le .dump
#Restauration
sudo -u postgres pg_dump -p $CPV_DB_PORT -d $CPV_DB_NAME -a -F c -t clients --disable-triggers --verbose -f /mnt/MyPC/DUMP/client-a-c.dump
Voilà mes amis, je cherche à automatiser tout cela .
Je vous remercie de bien vouloir m'aider s'il vous plait
Bonjour mes amis,
Je cherche à optimiser des requêtes de suppression de données basées sur une date (exemple 3 mois). ces requêtes sont effectuées sur une table qui contient une colonne date. Comme vous vous imaginez, je suis vraiment un novice en la matière. Quelqu'un pourrait m'aiguiller ou m'aider à trouver un tester un exemple d'index qui optimisera mes requêtes qui durent des heures pour une suppression de lignes ?
Je vous remercie par avance .
Merci Gleu,
Je vais tester, je te fais un retour demain .
Bonsoir à tous,
Je souhaite faire une restauration à partir d'une base dumper et je voulais savoir s'il est possible de faire une restauration selective en ligne de commande (Sans les Foreign Key) ?
Si oui quelle serait cette commande ?
Merci d'avance
Bon match
Merci Julien pour le retour.
Je suis une vraie bille, c'est pourquoi je demande conseils aux expert.
Je ne connais pas postgresql voilà pourquoi je fais du bricolage et sollicite votre aide.
CREATE FUNCTION suivi_mise_a_jour() RETURNS TRIGGER AS $BODY$
BEGIN
-- Insertion date de dernière mise à jour
IF NEW.date:= current_timestamp ;
RETURNS NEW ;
END IF;
$BODY$ LANGUAGE plpgsql
CREATE TRIGGER suivi_mise_a-jour BEFORE INSERT OR UPDATE ON ma_table
FOR EACH ROW EXECUTE PROCEDURE suivi_mise_a_jour);
Re à tous et toutes,
Merci pour les conseils.
Pouvez-vous me dire si cette fonction marchera avec mon trigger s'il vous plait ?
Si cela ne marche pas , que dois-je corriger ?
Merci d'avance pour votre aide .
Code
CREATE FUNCTION suivi_mise_a_jour() RETURNS TRIGGER AS $BODY$
BEGIN
-- Insertion date de dernière mise à jour
IF NEW.date IS NULL THEN
RAISE EXCEPTION NEW.date ne peut pas être NULL ;
END IF ;
NEW.date:= current_timestamp ;
RETURNS NEW ;
END ;
$BODY$ LANGUAGE plpgsql
CREATE TRIGGER suivi_mise_a-jour BEFORE INSERT OR UPDATE ON ma_table
FOR EACH ROW EXECUTE PROCEDURE suivi_mise_a_jour);