PostGreSQL - Rechercher une valeur dans toutes les tables
Je vous présente ici une fonction PostGreSQL permettant de rechercher une valeur donnée dans l'ensemble des champs de toutes les tables d'une base de données.
Fonction :
CREATE OR REPLACE FUNCTION search_whole_db(_like_pattern text)
RETURNS TABLE(_tbl regclass, _ctid tid) AS
$func$
BEGIN
FOR _tbl IN
SELECT c.oid::regclass
FROM pg_class c
JOIN pg_namespace n ON n.oid = relnamespace
WHERE c.relkind = 'r' -- only tables
AND n.nspname !~ '^(pg_|information_schema)' -- exclude system schemas
ORDER BY n.nspname, c.relname
LOOP
RETURN QUERY EXECUTE format(
'SELECT $1, ctid FROM %s t WHERE t::text ~~ %L'
, _tbl, '%' || _like_pattern || '%')
USING _tbl;
END LOOP;
END
$func$ LANGUAGE plpgsql;
Utilisation :
SELECT * FROM search_whole_db('mypattern');
1er novembre 2019 - Wakonda - PostgreSQL
Tweet |
Commentaires
Ajouter un commentaire
0 commentaires
Rechercher
Tags
Articles récents
- React - "create-react-app command not found"
- Ruby on Rails - Vider le cache
- Ruby on Rails - Forcer une migration
- PostGreSQL - Rechercher une valeur dans toutes les tables
- PostGreSQL - Supprimer des doublons
- Regex - Supprimer les espaces entre les balises HTML
- Android Studio - Logcat n'affiche plus rien
- Retour à la ligne dans une tooltip HTML
- Centrer verticalement le contenu des pseudos élements :before et :after
- Docker – Redémarrer Apache sans stopper le container