#1 Tue 15 September 2009 15:08
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
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
Re: Posgis: mise à jour de geometry_columns
Bonjour,
Autre solution : passer à la version 1.4.0 qui gère maintenant ceci en natif
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: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
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: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
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