#1 Wed 30 May 2018 17:39
- Romary
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 17 Jun 2011
- Messages: 211
[PostgreSQL] delete selon champ date
Bonjour,
Je cherche à supprimer des lignes d'une table selon un champ date de cette même table. Lorsque la date dépasse les 2 mois par rapport à la date actuelle, je souhaite supprimer les lignes. Sachant que c'est une requête qui doit être exécutée tous les jours, je ne sais pas comment m'y prendre?
Cordialement,
Ry
Hors ligne
#2 Wed 30 May 2018 18:19
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: [PostgreSQL] delete selon champ date
Code:
DELETE FROM ma_table WHERE ma_date < now() - INTERVAL '2 MONTH' ;
Attention aux fuseaux horaires !
Pour plus d'infos :
https://docs.postgresql.fr/10/functions-datetime.html
Hors ligne
#3 Wed 30 May 2018 21:58
- Romary
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 17 Jun 2011
- Messages: 211
Re: [PostgreSQL] delete selon champ date
Merci pour la requête mais là où je m'interroge c'est comment faire pour qu'elle s'exécute régulièrement, tous les jours par exemple??
Hors ligne
#4 Thu 31 May 2018 09:23
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: [PostgreSQL] delete selon champ date
Si votre serveur tourne sous linux,
vous pouvez bricoler une tâche avec cron,
ou utiliser l'extension pg_cron.
https://github.com/citusdata/pg_cron
Si l'environnement est Windows, il y a pgAgent,
mais je ne sais pas si le projet est toujours maintenu.
Il me semble qu'on peut l'installer avec stackbuilder,
si on utilise la version EntrepriseDB de Postgres.
Avec la version BigSQL, vous pouvez utiliser
l'utilitaire en ligne de commande pgc pour l'installer :
Code:
pgc install pgagent
Dernière modification par tumasgiu (Thu 31 May 2018 09:30)
Hors ligne
#5 Thu 31 May 2018 09:25
Re: [PostgreSQL] delete selon champ date
Bonjour,
La commande crontab sous linux :
Code:
*/10 * * * * postgres psql -d <maDB> -f "DELETE FROM ma_table WHERE ma_date < now() - INTERVAL '2 MONTH';"
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#6 Thu 31 May 2018 09:26
Re: [PostgreSQL] delete selon champ date
Code:
DELETE FROM ma_table WHERE ma_date < now() - INTERVAL '2 MONTH' ;Attention aux fuseaux horaires !
Pour plus d'infos :
https://docs.postgresql.fr/10/functions-datetime.html
J'espère que le champ est créé avec TIMEZONE Sinon c'est un peu comme créer un champ géométrique sans SRID ! Bonjour les problèmes.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#7 Thu 31 May 2018 09:34
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: [PostgreSQL] delete selon champ date
Oui la gestion du temps c'est toujours un casse-tête,
en général dans l'informatique.
Hors ligne
#8 Fri 01 June 2018 15:49
- Romary
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 17 Jun 2011
- Messages: 211
Re: [PostgreSQL] delete selon champ date
Merci pour vos réponses. Je pensais pouvoir faire ça dans postgresql mais je vais devoir faire une tâche planifiée windows.
Je n'ai pas la maîtrise de l'infrastructure...malheureusement.
Ry
Hors ligne
#9 Fri 01 June 2018 17:39
Re: [PostgreSQL] delete selon champ date
Merci pour vos réponses. Je pensais pouvoir faire ça dans postgresql mais je vais devoir faire une tâche planifiée windows.
Je n'ai pas la maîtrise de l'infrastructure...malheureusement.
Ry
Ce qui n'empêche nullement de le faire dans PostgreSQL (en utilisant psql)
Jean-Marie
Azimut
Hors ligne
#10 Wed 06 June 2018 13:26
- Romary
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 17 Jun 2011
- Messages: 211
Re: [PostgreSQL] delete selon champ date
Voilà je suis arrivé à faire ce que je voulais.
J'ai fait un script powershell mis en tâche planifié.
Powershell permet d'écrire mes requêtes sql sans me soucier de l'encodage (pratique pour les "<", les "()" utilisé dans la requête. Il permet aussi de travailler en utilisant ODBC donc pas de psql et donc encore une fois plus de problème d'encodage lié à psql.
Merci pour votre aide.
Ry
Hors ligne
#11 Wed 06 June 2018 21:19
Re: [PostgreSQL] delete selon champ date
Bonsoir,
Pour régler le problème de page de codes vous pouvez utiliser utiliser chcp dans la fenêtre de commande avant de lancer psql.
Page de codes défaut :
Code:
C:\psql>chcp Page de codes active : 850 C:\psql>psql -h serveur -p 5432 -U postgres Password for user postgres: psql (10beta4, server 10.4 (Debian 10.4-2.pgdg90+1)) WARNING: Console code page (850) differs from Windows code page (1252) 8-bit characters might not work correctly. See psql reference page "Notes for Windows users" for details. SSL connection (protocol: TLSv1, cipher: ECDHE-RSA-AES256-SHA, bits: 256, compression: off) Type "help" for help. postgres=# \q
en adaptant la page de codes :
Code:
C:\psql>chcp 1252 Page de codes active : 1252 C:\psql>psql -h serveur -p 5432 -U postgres Password for user postgres: psql (10beta4, server 10.4 (Debian 10.4-2.pgdg90+1)) SSL connection (protocol: TLSv1, cipher: ECDHE-RSA-AES256-SHA, bits: 256, compression: off) Type "help" for help. postgres=#\q
Jean-Marie
Azimut
Hors ligne
#12 Thu 07 June 2018 08:22
- Romary
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 17 Jun 2011
- Messages: 211
Re: [PostgreSQL] delete selon champ date
Bonsoir,
Pour régler le problème de page de codes vous pouvez utiliser utiliser chcp dans la fenêtre de commande avant de lancer psql.
Bonjour,
C'est ce que j'ai fait mais j'avais néanmoins quelques soucis d'écriture.
Ry
Hors ligne
#14 Thu 07 June 2018 11:31
- Romary
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 17 Jun 2011
- Messages: 211
Re: [PostgreSQL] delete selon champ date
Si vous avez le temps de le préciser, ce serait intéressant d'en connaitre le détail
Vous voulez le détail du script qui pose problème en batch ou celui qui fonctionne en powershell?
Hors ligne
#15 Thu 07 June 2018 12:45
Re: [PostgreSQL] delete selon champ date
Bonjour,
Celui qui fonctionne aidera plus
Merci,
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#16 Thu 07 June 2018 15:41
Re: [PostgreSQL] delete selon champ date
Bonjour,
Celui qui fonctionne aidera plus
Merci,
Y.
Oui (pour la solution immédiate) et non (pour l'analyse, il serait intéressant de voir le script qui ne fonctionne pas et les erreurs qu'il génère).
Jean-Marie
Azimut
Hors ligne