Message posté par : barthsdee
----------------------------------------
Bonjour,
J'ai une vue géante alimentée par une cinquantaine de tables,
JE cherche à faire des opérations sur des attributs:
J'ai 3 tables codant des informations (à chaque fois on est sur du Null,1;5)
La présence de null dans les tables m'empèche de faire des additions.
Dans le code de ma vue , je saisis donc concat (table1,table2,table3) as ma_valeur
ça marche
Je me retrouve avec 5 combinaisons possibles: 1;11;5;15,Null en résultat
Mon problème est le suivant: je n'arrive pas à convertir ces valeurs en texte plus explicite pour l'utilisateur final via une jointure de table .
Je souhaite remplacer les valeurs 1 et 11 par oui et null /5 et 15 par non ou null
J'ai tenté en créant une table de correspondance et en faisant une jointure de table, cependant ça ne marche pas (la jointure semble ne pas passer car en boucle)
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=361263#p361263
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : edouarbaer
----------------------------------------
Bonjour, je vous écrit car je suis désespéré.
Cela fait plusieurs semaines que j'essaye d'intégrer un très gros fichiers geojson dans ma base de donnée postgresql.
j'ai essayé par le biais de qgis mais la couche est beaucoup trop lourde et il semble y avoir des problèmes de géométrie dans ma couche qui rendent impossible l'import dans ma base de donnée postgresql (une sombre histoire de polyligne incompatible avec des multipolyligne).
Apres avoir chercher un peu partout il semble que la façon la plus correcte de répondre à mon besoin est d'utiliser la commande ogr2ogr.
à priori, de ce que j'ai compris quand on installe pgadmin et/ou qgis, ogr2ogr.exe est directement installé dans les répertoire de ces programmes. je n'ai donc pas procédé à son installation à proprement parlé. En revanche, quand je réalise ma ligne de commande :
-----------------
Code :
ogr2ogr -f "PostgreSQL" PG:"host=localhost port=5432 dbname=db_geo user=admin password=XXXX" -nln data_reseau "C:\Users\toto\Downloads\reseau.geojson"
-----------------
j'ai cette erreur :
-----------------
Code :
ERROR 1: Unable to find driver `PostgreSQL'
-----------------
après avoir chercher un peu partout, j'ai vu qu'il fallait que j'installe gdal... Sauf qu'a priori gdal est déjà installé avec postgresql et qgis, mais ça je n'en suis pas sur...
La méthode que j'ai trouvé c'est d'installer gdal via anaconda3, ce que j'ai fait, mais quand je lance la commande à partir de mon environnement conda, j'ai la même erreur qui ressort...
-----------------
Code :
ERROR 1: Unable to find driver `PostgreSQL'
-----------------
là je suis arrivé au bout du bout, je ne suis ni géomaticien, ni informaticien et je n'ai aucune solution concrète pour résoudre mon problème. J'aimerai pouvoir utiliser les lignes de commandes pour insérer des fichiers directement dans postgresql mais il y a quelque chose qui m'échappe dans l'utilisation ogr2ogr.
je suis sous windows
quelqu'un pourrait m'aider à trouver une solution ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=361230#p361230
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Kiecane
----------------------------------------
Bonjour,
Je recherche actuellement une requête pour trouver la date de création et de mise à jour d'une table. J'ai vu qu'on pouvait utiliser CREATE_TIME et UPDATE_TIME pour trouver cette information mais je n'arrive à les utiliser. J'ai écrit :
SELECT CREATE_TIME FROM nom_schéma.nom_table
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360856#p360856
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Lucie Bertrand
----------------------------------------
Bonjour,
Je vous remercie pour votre réponse et vous prie de m'excuser pour le retard de ma réponse.
Je crois avoir trouvé le problème... une erreur de débutante je pense, le nom de schéma comportait un espace...
Merci encore à vous !
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360902#p360902
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Nyldan
----------------------------------------
Bonjour,
je souhaiterais savoir si il est possible (mais j'ai un gros doute...) pour un trigger de ne pas se déclencher à l'ajout ou à la suppression d'une colonne.
J'ai un fonction qui modifie la colonne date_maj avec celle du jour actuel et un trigger qui le déclenche avant un insert ou un update. Mon souci est que quand une colonne est ajoutée à ma table le trigger met à jour toutes les lignes de la base (ce qui est normal). Il y a t-il un moyen de contourner celà?
Mes deux code:
-----------------
Code :
FUNCTION: schema.nom_fonction()
-- DROP FUNCTION IF EXISTS schema.nom_fonction();
CREATE OR REPLACE FUNCTION schema.nom_fonction()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
new.date_maj := NOW();
RETURN NEW;
END
$BODY$;
ALTER FUNCTION schema.nom_fonction()
OWNER TO PUBLIC;
GRANT EXECUTE ON FUNCTION schema.nom_fonction() TO PUBLIC;
-------------------------------------------------------------------------------
-- Trigger: nom_trigger
-- DROP TRIGGER IF EXISTS nom_trigger ON schema.nom_table_ou_appliquer_trigger;
CREATE TRIGGER nom_trigger
BEFORE INSERT OR UPDATE
ON schema.nom_table_ou_appliquer_trigger
FOR EACH ROW
EXECUTE FUNCTION schema.nom_fonction();
-----------------
Merci pour vos retours
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360790#p360790
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : mayelle.cardron
----------------------------------------
Bonjour,
j'ai utilisé le dblink pour créer des vues matérialisés à partir d'une autre base. Cependant, ce moyen de procéder n'est pas optimal
Je l'emploi comme ci après:
-----------------
Code :
CREATE MATERIALIZED VIEW schema.vm_nom
AS SELECT t1.colonne1, t1.colonne2 , t3.geom
FROM dblink('hostaddr=127.0.0.1 port=5432 user=user dbname=dbname password=psswrd',
'select colonne1, colonne2, geom from schema.t1') t1(colonne1 varchar(24),
colonne2 varchar(127), geom geometry(geometry, 2154))
-----------------
Y aurait-il un autre moyen de faire, notamment lorsque l'on appelle les colonnes avec leur type, ceci est très long ?
J'ai aussi pensé à l'extension fdw mais je ne comprend pas tout à fait comment ça s'utilise.
Je précise que dans mon cas, je connecte 2 bases en local.
Merci d'avance.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360565#p360565
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : guibouvier
----------------------------------------
Bonjour
j'ai beau avoir parcouru le tutoriel postgresql, je n'arrive pas à mes fins pour ma requete SQL.
J'ai une table dans laquelle j'ai 15000 dossiers d'urbanisme répartis sur une trentaine de communes.
Je cherche à compter le nombre de dossiers par commune et par type de dossier.
J'ai donc lancé cette requete (qui fonctionne):
-----------------
Code :
select count (id_dossier), dossiernumtypeentiteappcode ,communeinseecode
from dossier d
where dossierdatedepot > '2023-01-01' and dossierdatedepot < '2024-01-01'
group by communeinseecode, dossiernumtypeentiteappcode
order by communeinseecode, dossiernumtypeentiteappcode
-----------------
J'obtiens ce type de résultats
1 CU 07009
14 DP 07009
3 PC 07009
12 CU 07015
6 DP 07015
1 PA 07015
5 PC 07015
2 CU 07051
6 DP 07051
8 CU 07084
9 DP 07084
Je cherche à obtenir les mêmes informations mais en colonne (type de dossier) avec une ligne par commune
c'est à dire
Code insee Commune / PC / CU / DP
07009 / 3 / 1 / 14
Est ce réalisable ? si oui comment ? peut on mettre plusieurs COUNT dans le SELECT ?
Sur certains forums, on parle de faire plusieurs requetes avec des UNION. J'ai testé mais ça ne permet pas d'obtenir par commune, le nombre de dossiers pour chaque type de dossier.
Merci d'avance pour votre aide
Gui
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360096#p360096
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : emmamillefeuille
----------------------------------------
Bonjour,
Je me permets de réanimer ce sujet car je suis dans un cas similaire : je souhaite moi aussi obtenir la longueur d'un réseau (cours d'eau) par communes et la fonction que j'utilise est la même que celle plus haut avec
-----------------
Code :
sum(st_length(st_intersection(a.geom,b.geom)))
-----------------
et elle fonctionne très bien pour les cours d'eau qui "entrent" une fois par communes et la traversent par exemple.
Néanmoins, certains cours d'eau en bordure de communes longent la limite, entrant et sortant plusieurs fois de chaque communes (en zigzag) et là la longueur est nulle.
Auriez-vous une idée ? Je sais que la géométrie "en morceau" de la ligne sera discutable, mais j'aimerais bien obtenir la longueur par communes malgré tout.
Merci à tous
Emma
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=360115#p360115
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : emmamillefeuille
----------------------------------------
Bonjour,
J'utilise DBeaver pour mon traitement de BDD et je tombe aujourd'hui sur cette erreur lorsque j'utilise l'aggrégation GROUP BY. Je crois comprendre que c'est parce que j'appelle des colonnes dans select que je ne rappelle pas dans mon group by.
Néanmoins j'utilisais jusqu'ici le gestionnaire de données de QGIS et je n'ai jamais eu ce soucis avant. Mais je travaillais sur des couches virtuelles, je suis là sur une base PostgreSQL, je ne sais pas si ça change quelque chose.
-----------------
Code :
with actions_sysma_2022 as (select o.sysma_object_type as "type_objet", a.sysma_action_type as "type_action",
count(distinct actions.sysma_action_id) as "nb_actions",
sum((case when ST_GeometryType(actions.geom) = 'ST_LineString' then ST_Length(actions.geom)/1000 when ST_GeometryType(actions.geom) = 'ST_Polygon' then ST_area (actions.geom)/10000 else null end)) as "emprise",
case when ST_GeometryType(actions.geom) = 'ST_LineString' then 'km_lineaire' when ST_GeometryType(actions.geom) = 'ST_Polygon' then 'ha_surface' else null end as "unites",
actions.program_year ,actions.status,actions.geom
from eau_brut.sysma_actions actions
left join eau_brut.sysma_object_type o on actions.obj_sysma_object_type_id = o.sysma_object_type_id
left join eau_brut.sysma_action_type a on actions.sysma_action_type_id = a.sysma_action_type_id
where group_alias = 'travaux' and actions.program_year = 2022 and actions.status = 'termine'),
actions_sage as (select sage.codenatzone,sage.nomzone,actions_sysma_2022.*,st_intersection(actions_sysma_2022.geom,sage.geom)geom
from actions_sysma_2022,eau_referentiel.sandre_sage as sage
where sage.codenatzone IN ('SAGE04015', 'SAGE04032', 'SAGE04033', 'SAGE03005', 'SAGE04008') and st_intersects (actions_sysma_2022.geom,sage.geom))
select *
from actions_sage
-----------------
A ce code, il me répond que je dois ajouter la colonne o.sysma_object_type alors que je ne fais même pas de group by dans le premier select et si j'ajoute soigneusement toutes les colonnes de la ligne 1 dans un group by sur la ligne 10,alors i y a un affichage mais les colonnes sont indiquées d'un point orange "pas de correspondance"... Bref je suis un peu perdue et je n'obtiens pas ce que je cherche.
J'aimerais bien à terme, faire mon group by sur le dernier (3") select. mais déjà faire fonctionner les deux premiers ;)
Est-ce que quelqu'un peut m'expliquer les subtilités de GROUP BY ?
Merci d'avance à tous
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=359944#p359944
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : image95
----------------------------------------
Bonjour,
Je souhaite trouver un moyen de déplacer 100 tables d'un schema 'A' vers un schema 'B'. Non seulement les données. Mais également les index, les clef primaires, contraintes (en quelque sorte INCLUDING ALL). Sauf erreur de ma part, ce bout de code permettrait de déplacer les données en tant que tel. Mais comment faire pour déplacer également les index, contraintes, clef primaire...
-----------------
Code :
DO
$$
DECLARE
row record;
BEGIN
FOR row IN SELECT tablename FROM pg_tables WHERE schemaname = 'A' -- and other conditions, if needed
LOOP
EXECUTE format('ALTER TABLE A.%I SET SCHEMA ;', row.tablename);
END LOOP;
END;
$$;
-----------------
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358795#p358795
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net