J’utilise la vue pg_views pour récupérer le code des vues que je dois créer
J’ai écrit un truc du style :
select 'create or replace view '||viewname||' as '||definition from pg_views where viewname =’ act_dim_abio_microbio’;
et le résultat est ci-dessous : (je récupère le résultat dans un fichier)
Code : Tout sélectionner
create or replace view act_dim_abio_microbio as SELECT DISTINCT act_dim_dbio.dbio_id_abio AS id,+
first_value( +
CASE +
WHEN ((act_dim_dbio.dbio_code_test)::text ~~ 'germ%'::text) THEN 'oui'::text +
ELSE 'non'::text +
END) OVER (PARTITION BY act_dim_dbio.dbio_id_abio ORDER BY +
CASE +
WHEN ((act_dim_dbio.dbio_code_test)::text ~~ 'germ%'::text) THEN 'oui'::text +
ELSE 'non'::text +
END DESC) AS abio_microbiologie +
FROM act_dim_dbio;
Existe-t-il une option pour éviter de générer les + ?
Réponse :
Ces « + » sont de l’affichage psql , ils ne viennent pas de ta requête (à noter que tu pourrais utiliser pg_get_viewdef plutôt que d’interroger directement le catalogue).
Tu peux changer comme tu veux toute l’apparence des résultats dans psql, tu peux faire du brut avec unaligned par exemple (j’ai mis en plus tuples_only pour n’avoir que les lignes et pas les entêtes de colonnes), exemple :
Code : Tout sélectionner
dh00^*> \pset format unaligned
Le format de sortie est unaligned.
dh00^*> \pset tuples_only
L'affichage des tuples seuls est activé.
dh00^*> select pg_get_viewdef('act_dim_abio_microbio'::regclass, false);
SELECT DISTINCT act_dim_dbio.dbio_id_abio AS id,
first_value(
CASE
WHEN ((act_dim_dbio.dbio_code_test)::text ~~ 'germ%'::text) THEN 'oui'::text
ELSE 'non'::text
END) OVER (PARTITION BY act_dim_dbio.dbio_id_abio ORDER BY
CASE
WHEN ((act_dim_dbio.dbio_code_test)::text ~~ 'germ%'::text) THEN 'oui'::text
ELSE 'non'::text
END DESC) AS abio_microbiologie
FROM act_dim_dbio;