Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 15 September 2009 15:08

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Posgis: mise à jour de geometry_columns

Bonjour,

je souhaite créer un script ou une fonction SQL qui me permettrait de mettre à jour automatiquement la table geometry_columns.

Grâce à ces deux requêtes, j'arrive à sélectionner les noms des tables qui ont une colonne 'the_geom' mais qui ne sont pas dans geometry_columns.

Code:

drop view descrip_dbcol;
create view descrip_dbcol as 
select  i.table_schema, i.table_name, i.column_name, i.data_type  
from information_schema.columns as i
where  i.table_schema in  (select distinct table_schema from descrip_db )
and i.table_name != 'geometry_columns' and  i.table_name != 'spatial_ref_sys';

drop table table_hors_geometrycolumns;
create table table_hors_geometrycolumns as 
select table_schema,table_name from descrip_db
where table_schema||table_name not in (select f_table_schema||f_table_name from geometry_columns)
Except 
select table_schema,table_name from descrip_db 
where table_schema||table_name 
not in (select table_schema||table_name from descrip_dbcol where column_name = 'the_geom');
alter table table_hors_geometrycolumns add column id serial;

désormais il me reste l'étape où il faut faire un INSERT dans geometry columns.

Je pensais à une sorte de boucle de ce style :

Code:

CREATE OR REPLACE FUNCTION "public"."mafonction" () RETURNS boolean AS
$body$
DECLARE 
ma_table character varying;
i=1
nb_table_a_modif = select count * from table_hors_geometrycolumns
while i < nb_table_a_modif
ma_table = 'select table_name from table_hors_geometrycolumns where id=i';


execute 'select  distinct '''' as f_table_catalog, t.table_schema,t.table_name,''the_geom'' as f_geometry_column,
2 as coord_dimension,srid(a.the_geom), geometrytype(a.the_geom)
from table_hors_geometrycolumns as t , 'ma_table' as a ' into geometry_columns;

set i= i+1

return true;

END;
$body$
LANGUAGE 'plpgsql';

mais je ne connais pas trop le lanage plpgsql et j'ai pour l'instant écrit que des fonctions très simples.

Merci d'avance

Dernière modification par ppluvinet (Tue 15 September 2009 15:09)


Pascal PLUVINET

Hors ligne

 

#2 Tue 15 September 2009 15:17

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: Posgis: mise à jour de geometry_columns

Bonjour,

Autre solution : passer à la version 1.4.0 qui gère maintenant ceci en natif wink

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Tue 15 September 2009 15:19

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: Posgis: mise à jour de geometry_columns

Merci Yves pour l'info. Cependant, j'ai pas le choix, il faut que je reste sur ma version actuelle. Ce n'ai pas moi qui gère cela et il n'est malheureusement pas d'actualite de changer.!!!


Pascal PLUVINET

Hors ligne

 

#4 Tue 15 September 2009 15:24

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: Posgis: mise à jour de geometry_columns

En fait mon souci principal, c'est arriver à mettre dans une variable le résultat d'une requête.
Dans mon exemple précédent, je veux mettre dans ma_table le résultat de la requête

Code:

select table_name from table_hors_geometrycolumns where id=i'

Pascal PLUVINET

Hors ligne

 

Pied de page des forums

Powered by FluxBB