Quelle requête retournerait le nom des colonnes d'une table où toutes les lignes sont nuls?
Vous devez interroger le catalogue d'informations pour ces informations:
SELECT column_name FROM information_schema.columns WHERE table_name='your_table'
vous donne les tables correspondantes pour vos colonnes.
Je n'ai pas d'installation des postgres actuellement à portée de main, mais le reste doit être simple
loop over the results of the above query and foreach result
send a COUNT(*) to the table
if the count is null, give back the column,
else ignore it
end foreach
Après avoir combiné plusieurs ressources, j'ai proposé cette fonction et une requête pour trouver toutes les colonnes vides dans toutes les tables de base de données.
CREATE OR REPLACE FUNCTION public.isEmptyColumn(IN table_name varchar, IN column_name varchar)
RETURNS boolean AS $$
declare
count integer;
BEGIN
execute FORMAT('SELECT COUNT(*) from %s WHERE %s IS NOT NULL', table_name, quote_ident(column_name)) into count;
RETURN (count = 0);
END; $$
LANGUAGE PLPGSQL;
SELECT s.table_name, s.column_name
FROM information_schema.columns s
WHERE (s.table_schema LIKE 'public') AND
(s.table_name NOT LIKE 'pg_%') AND
(public.isEmptyColumn(s.table_name, s.column_name))
Prendre plaisir :)