Message posté par : Kiecane
----------------------------------------
Bonjour,
On m'a envoyé un dump .sql avec des données à insérer : chaque paragraphe de données à insérer commence par un COPY schema.table (champ1, champ2, ...) FROM stdin; suivi des données en question. Comme cela ne fonctionne pas lorsque je copie-colle ce type de paragraphe dans pgAdmin, j'utilise Excel pour les réécrire avec des INSERT INTO et rentrer ainsi les données dans les tables de ma bdd. Le seul problème, c'est que parfois les données à la suite du COPY... sont des \N (ce qui doit correspondre à des NULL je suppose) et, lors de l'insertion, cela bloque lorsque la taille du champ est de 1 ou lorsque son type n'est pas un alphanumérique... J'ai essayé de remplacer ces \N par du vide, par des null ou des NULL mais c'est toujours le même problème. Comment faire s'il-vous-plaît ?
Merci d'avance pour l'aide apportée.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358637#p358637
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 : sandrine.ccvh
----------------------------------------
Bonjour,
Je suis sous Windows et je dois intégrer une base de données qu'on m'a transmis en sql dans PostgreSQL. Je passe alors par la commande psql pour intégrer la sauvegarde. Tout va bien jusque là mais j'aimerai savoir s'il y a un moyen pour enregistrer ce que fait psql, donc avoir dans un fichier texte les CREATE TABLE, ALTER TABLE, ... et les erreurs d'import que je vois passer en ligne de commande.
Ce que je fais en ligne de commande :
cd C:\Program Files\PostgreSQL\15\bin
psql -U postgres -W -f chemin/de/mon/dump.sql
mais est-il possible d'ajouter un paramètre pour créer alors un fichier en .txt ou .csv de ce que je vois défiler?
Je vous souhaite une bonne journée!
Marie
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358745#p358745
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 suis débutant avec Postgresql. J'ai 50 tables dans un schéma "ign" (schéma autre que public).
Je souhaite pour chacune de ces 50 tables :
- Ajouter un prefixe au nom de la table : "IGN_bdTopo_"
- Ajouter un suffixe au nom de la table : "_V1"
- créer une nouvelle colonne "date" de type date. Et peupler ce champ avec la valeur : 15/06/2021
- créer une nouvelle colonne "source" de type varchar (longueur 50). Et peupler ce champ avec la valeur : 'ign'.
- déplacer tous les éléments de ces 50 tables (including all). du schema "ign" vers le schema "ign_v2". Que ce soit les donnée, les contraintes, les indexes.
Si une personne pense pouvoir m'aider ? Merci beaucoup.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358744#p358744
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 : Sig_Passy
----------------------------------------
Bonjour,
Je suis entrain de mettre en place un trigger de "suivi" sur ma base de données.
Jusque là tout va bien. Le soucis vient sur le fait que ma base compte pas mal de table et que je souhaiterais "déployer" le trigger en une fois sur toutes mes tables et non table par table.
-----------------
Code :
-- création du Trigger MATABLE1
CREATE TRIGGER trigger_suivi_MATABLE1
AFTER INSERT OR UPDATE OR DELETE ON MATABLE1
FOR EACH ROW EXECUTE PROCEDURE public.fonction_suivi();
-- création du Trigger MATABLE2
CREATE TRIGGER trigger_suivi_MATABLE2
AFTER INSERT OR UPDATE OR DELETE ON MATABLE2
FOR EACH ROW EXECUTE PROCEDURE public.fonction_suivi();
-----------------
Etc pour chaque table de la base
C'est là que les choses se complique...
J'imagine qu'il faut faire une sorte de "boucle" mais j'avoue atteindre mes limites ici...Pourriez vous m'aider ?
Merci à vous.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358693#p358693
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 : Lison94
----------------------------------------
Bonjour,
Je souhaite importer une couche dans un schema postgis seulement j'utilise dbmanager et ce message d'erreur s'affiche :
Erreur 2
La création de la source de données "environnement et nature"."cours_deau_france" a échoué :
ERROR: AddGeometryColumn() - SRID must be <= 998999
CONTEXT: PL/pgSQL function addgeometrycolumn(character varying,character varying,character varying,character varying,integer,character varying,integer,boolean) line 45 at RAISE
SQL statement "SELECT public.AddGeometryColumn('',$1,$2,$3,$4,$5,$6,$7)"
PL/pgSQL function addgeometrycolumn(character varying,character varying,character varying,integer,character varying,integer,boolean) line 5 at SQL statement
Avez vous une idée du pb ?
Merci par avance,
Lison
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=339318#p339318
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 : sur_le_tas (maxime.carette(a)atmo-grandest.eu)
----------------------------------------
Un grand merci!!! Ça fait des heures que je patauge pour comprendre ce qui se passe.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358620#p358620
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 : Sylvain M.
----------------------------------------
Salut à tous,
J'ai des données dans une colonne, qui sont une concaténation de valeurs séparées par des virgules.
Je souhaite créer autant de lignes que de valeur dans cette colonne.
J'y arrive bien avec PostGreSQL avec une requête de ce type :
-----------------
Code :
trim(unnest(string_to_array(monchamp, ',')))
-----------------
Mais j'aimerais bien le faire directement avec les couches virtuelles de QGis, donc avec SQLite, sans passer par PostGreSQL.
J'ai testé* avec split(monchamp), mais ça n'a pas marché.
Merci pour vos conseils :)
* ça m'avait été proposé par ChatGPT, à "qui" j'avais posé la question et qui m'avait répondu "Notez que la fonction "split" est disponible uniquement pour les versions de SQLite 3.31.0"
Pourtant, un select sqlite_version(); depuis les couches virtuelles m'indique que je suis en "3.39.4", donc théoriquement OK pour "split()".
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358486#p358486
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 : Romary Munier
----------------------------------------
Bonjour,
Je souhaite réaliser cette requete sur une base MSSQL (pour transférer sur une base pgsql ensuite). Voici la commande :
-----------------
Code :
\ogr2ogr -f "PostgreSQL" PG:$NMchc -nln "a_pcf" -f MSSQLSpatial "MSSQL:server=MonServeur;database=mabase;UID=LectID;PWD=LectID_mdp" -sql "select top 100 * from mabase.dbo.tb_pfor"
-----------------
Cela fonctionnait encore jusqu'en septembre 2022 (vu dans les log). Mais maintenant j'ai :
-----------------
Citation :
Unable to open datasource `MSSQL:server=MonServeur;database=mabase;UID=LectID;PWD=LectID_mdp' with the following drivers.
-----------------
Merci de votre aide.
Romary
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=357965#p357965
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 : GEOFFROY DETRY
----------------------------------------
Bonjour,
Je dispose d’une table de polygone [z_pop] dans une BD PostGIS. Les géométries des polygones peuvent contenir des artefacts sous forme de microlignes dues à des erreurs de numérisation ou de groupement.
Je cherche à identifier les polygones présentant ces erreurs, en récupérant l’identifiant [agr_id] du polygone et, si possible, la géométrie de la microligne concernée ou des vertex constitutifs. L'identification suffit. Je ne cherche pas à solutionner les problèmes topologiques qui feront l’objet d’une révision manuelle.
Vous trouverez un jeu de données test [z_pop] postgis en attaché, avec 3 polygones présentant des artefacts. Cette table peut être restaurée dans le schéma Public
Voici les traitements que j'ai réalisé pour l'instant.
1. Générer une sortie qui présente les vertex via [ST_DumpPoints] se trouvant complétement inclus dans leur polygone d’appartenance
-----------------
Code :
WITH cte_1 as ( SELECT agr_id, (ST_DumpPoints(geom)).geom AS pt FROM z_pop),
geom_envelop AS ( SELECT agr_id as id_pol, geom AS geom_ext FROM z_pop)
SELECT row_number() over w as gid, pt FROM geom_envelop JOIN cte_1
ON ST_WITHIN (geom_ext, pt)
WINDOW w AS (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
-----------------
Cette méthode ne marche pas car il faudrait récupérer les polygones sans les microlignes. Or, un simple dump sur les polygones ne renvoie qu'une seule géométrie [Polygone] et ne permet pas d'identifier les vertex totalement compris dans l’aire d’intérêt.
2. J'ai réalisé la méthodologie suivante
-----------------
Code :
--1. Explosion des polygones en tronçons
WITH geom_transf AS (
SELECT agr_id, ST_MakeLine(lag((pt).geom, 1, NULL) OVER (PARTITION BY agr_id ORDER BY agr_id, (pt).path), (pt).geom) AS geom_line
FROM (SELECT agr_id, ST_DumpPoints(geom) AS pt FROM z_pop) as dumps
),
--2. Génération de l’enveloppe externe des polygones
geom_envelop AS (
SELECT agr_id as id_pol, ST_EXTERIORRING((st_dump(z_pop.geom)).geom) AS geom_ext FROM z_pop
)
-- 3. Croisement du résultat de 1) et du résultat de 2) afin d’individualiser les lignes qui ne s’intersectent pas avec l’enveloppe extérieure.
SELECT row_number() over w as gid, geom_line as geom_line_erreur
FROM geom_envelop JOIN geom_transf ON NOT st_intersects(geom_ext, geom_line) AND agr_id=id_pol
WINDOW w AS (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
-----------------
Certaines lignes, mais pas toutes, sont identifiées. Le résultat est donc assez moyen.
En suivant cette voie, il faudrait réaliser un [ST_EXTERIORRING] puis une opération de reconstitution des polygones [ST_Polygonize] mais je crains un traitement trop lourd (environ 65.000 polygones dans le jeu de données)
Quelqu’un aurait-il une méthode plus efficace et moins couteuse ou aurait déjà réalisé un traitement similaire ?
Merci d'avance
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=357915#p357915
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 : Léandre Béron
----------------------------------------
Bonjour,
Dans le cadre du développement d'une stratégie d'administration de données pour une collectivité, je suis tombé sur la méthode d'identification LDAP à partir de postgreSQL.
Aujourd'hui non connecté à notre LDAP, nous utilisons actuellement le raisonnement suivant :
- comptes pour le service : sig_admin (droit propriétaire sur tout (non superuser)). 3 à 4 utilisateurs peuvent utiliser ce compte pour travailler sur la BDD. D'autres comptes du service devraient suivre, comme un sig_edit et un sig_read avec des privilèges différents.
- 1 compte par utilisateur métier
Au niveau des droits, nous raisonnons par groupe de service de la collectivité, avec 2 types de groupe :
- [SERVICE]_R --> Uniquement de la lecture
- [SERVICE_RW] --> Lecture & Ecriture
Chaque utilisateur est donc présent dans le ou les groupes concernés.
Plusieurs questions se posent donc si nous passions à une authentification LDAP :
Premièrement, cela signifie visiblement que le user doit être DANS PostgreSQL ET dans l'AD : Peut-on conserver un compte sig_admin qui n'est pas dans notre AD uniquement pour notre accès en tant qu'administrateur (4 personnes différentes) ? les rôles pg_ de base ne sont visiblement pas impacté eux, mais les autres ?
Egalement, selon notre gestion actuelle (les groupes ont des accès/droits, dans lesquels des utilisateurs en font partie), comment cela se passerait-il avec une authentification LDAP ? Nous allons devoir ajouter les utilisateurs concernés en ayant EXACTEMENT le même nom dans l'AD et dans PostGreSQL, mais qu'indiquons-nous dans l'item "password" lors de la création côté PostGreSQL ? (Nous n'avons pas vocation à mettre toute l'AD dans PostgreSQL, donc nous n'utiliserons pas l'outil ldap2pg)
Ensuite, comment cela va se passer pour les groupes ? On les conserve dans PostGreSQL et lors de l'authentification de l'utilisateur, on va checker le password via l'AD et, une fois connecté, les groupes [SERVICE]_R et [SERVICE]_RW vont fonctionner de la même manière (bien que ces groupes n'existent pas dans notre AD mais uniquement les utilisateurs qui seraient rattachés à ce/ces groupe(s) côté postgres ?
Je n'ai malheureusement pas trouvé d'exemples qui évoquaient cela pour répondre à mes questions.
En vous remerciant,
Léandre BERON
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=358149#p358149
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