PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Shp2PGSQL choisir le schema pour l'insertion de la table

Technique - général | Shp2PGSQL choisir le schema pour l'insertion de la table

Par gglafouine le 22/08/2007 - 14:54

Bonjour,

je possède 2 schéma sur ma base de données titi (test et toto)

je voudrai savoir comment je peux intégrer ma table dans le schéma toto via la commade shp2pgsql

voila la commande que je rentre une fois dans le dossier:

shp2pgsql -s 27582 -D -I forets foret titi | psql titi

je n'arrive pas à trouver l'option me permetant de l'intégrer dans le bon schéma ducoup il passe dans le premier (test)

Merci d'avance.

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

shp2pgsql - choisir le shéma pour insertion

syracine/ = 23 Août, 2007 - 15:01

Bonjour,

Voici ce qu'il faut taper:

shp2pgsql -s monSrid -D -I monfichiershp.shp -d monshema.matable | psql -U monutilisateur mabasededonnees

Supposons que:
- ta base de données s'appelle 'titi'
- l'utilisateur 'pierre' a les droits d'écriture sur cette base de données
- tu as 2 shémas qui se nomment 'test' et 'toto'
- tu veux insérer le fichier 'forets.shp' dans la table 'arbre' qui se trouve dans le shéma 'toto'
- les données graphiques contenues dans 'forets.shp' sont référencées par le SRID 27582

Alors, tu tapes :
shp2pgsql -s 27582 -D -I forets.shp -d toto.arbre | psql -U pierre titi

Si tu as encore des erreurs, tu peux scinder ta commande en deux en envoyant la sortie de la commande shp2pgsql dans un fichier temporaire (ce qui est recommandable quand on fait ça la première fois):
shp2pgsql -s 27582 -D -I forets.shp -d toto.arbre >> insert.sql

Puis compléter par:
pgsql -U pierre -f insert.sql titi

Si tu as d'autres problèmes, n'hésite pas à reposter, car ce n'est pas évident la première fois.


shema

devAno/ = 23 Août, 2007 - 15:40

Bonjour j'ai aussi un probleme pour importer un shape.J'ai beau specifier dans quel shema je veux mettre ma table, j'ai une erreur comme quoi il ne triuve pas la fonction addGeometryColumn.?
Quelqu'un a-t-il une idée ?
Merci


Ulisation de PostGIS

syracine/ = 23 Août, 2007 - 16:50

Bonjour,

Je n'en ai pas parlé tout à l'heure, mais le sujet de ce post concerne l'extension PostGIS de PostgreSQL.

Avez-vous installé PostGIS dans votre BD? PostGIS est une suite de fonctions écrites en plpgsql qui viennent s'ajouter directement dans la BD pour fournir des fonctionnalités géospatiales à PostgreSQL. La commande shp2pgsql accompagne cette suite de fonctions.

Je vous suggère d'aller voir les sites suivants:
www.postgis.org (site d'origine, complet mais en anglais)
ou en français www.postgis.fr (Vous y trouverez de la documentation sur les commandes de base).

Pour répondre à la question de devAno, shp2pgsql ne fonctionne pas car cette commande génère un script SQL qui contient la fonction addGeometryColumn() pour ajouter des données géomètriques. Il faut que cette fonction apparaisse dans la liste des fonctions de la BD dans laquelle on insère un fichier.shp.

Si vous avez besoin d'informations sur la façon d'installer PostGIS et de configurer une base de données sous cette extension, je vous suggère de poster votre message (et de lire d'abord la documentation) sur les sites mentionnés plus tôt.

Bonne chance


Oui j'ai installé PostGis.En

devAno/ = 23 Août, 2007 - 16:57

Oui j'ai installé PostGis.Ensuite nous avons cree 2 shema, juste pour "separer" les tables Geo des autres tables et nous avons migrer les fonction geometrique dans le shema qui contient les tables geo.Le probleme est peut être la.Dans la commande shp2pgsql, lorsque je dis que je veux creer ma table dans le shmea Geo, il n'a pas l'air de lire les fonctions associées à ce shema. Je ne suis peut être pas tres clair...
En fait lors de mes premiers tests je n'avais qu'un seul shema et j'avais bien reussi Ă  utiliser le "shp2pgsql".


Postgis - Tables de référence de base

syracine/ = 23 Août, 2007 - 17:26

Bonjour,

Vérifie d'abord qui est propriétaire du shéma 'Geo'. Est-ce le même utilisateur que pour l'autre shéma?

Deuxième point à vérifier, PostGIS nécessite deux tables pour la gestion de la géoréférence spatiale. Il s'agit de la table 'geometry_columns' - qui contient les données relatives aux champs géométriques (nom de la base de données, nom de la table, nom du champ géométrique, SRID du champ, etc., et nom du SHÉMA entre autre) - et de la table 'spatial_ref_sys' - qui contient la liste des systèmes de projections cartographiques supportées par PostGIS. Les deux tables doivent être présentes pour utiliser la commande shp2pgsql.

Vérifie si les deux tables existent dans ton shéma. Si la table 'geometry_columns' existe, vérifie si elle pointe vers le bon shéma, la bonne BD, la bonne table, le bon champ.

Remarque: Si tu joues avec des données sensibles, fait un backup avant de jouer dans cette table!

Cordialement


shema

devAno/ = 23 Août, 2007 - 17:31

J'ai migré les fonctions dans un shema "public" et maintenant ça marche.


2 shémas pour PostGIS = schizophrénie assurée

syracine/ = 23 Août, 2007 - 17:45

Bonjour,

Je crois que vous avez pris la décision la plus sage qui soit. En effet, je ne vois pas trop l'utilité d'avoir un shéma distinct pour séparer les tables géométriques des autres tables. Cela vous conduisait inutilement vers des chemins hasardeux et compliqués!

Cordialement


Bonjour, en fait la division

gglafouine/ = 24 Août, 2007 - 13:57

Bonjour, en fait la division des deux shémas été obligatoire pour notre infrastructure car pour les utilisateur de geonetwork avec postgreSQL nous oblige à définir un schéma portant le nom de l'utilisateur.

merci pour votre explication mais il me reste un roblème. Ma table s'enregistre correctement avec les deux méthodes mais j'ai remarqué une erreur de taille. j'ai ouvert matable sous phppgadmin pour voir le resultat.

>> tout les id sont =0

du coup j'ai vérifier le fichier en faisant un more -d foret.sql
j'ai le premier champ de ma columg geométrie qui est vide. :|

AddGeometryColumn('',

Je pense pas que se soit normal mais es que je peux corriger cela?


en fait j'ai compris le premi

gglafouine/ = 24 Août, 2007 - 14:15

en fait j'ai compris le premier champs correspond au schéma quand il est pas stipulé dans la requète ;)

bref mon erreur viens d'ailleur.


ID = 0

syracine/ = 24 Août, 2007 - 15:09

Bonjour,

Concernant le premier champ de AddGeometryColumn, je crois qu'il est normal que ça soit vide (''). Ce champ dans cette fonction indique le nom du catalogue. D'après moi, cela n'a rien à voir avec ton problème d'ID.

Pour les ID = 0, je crois que j'ai une piste. Vérifie dans ton script SQL si, au moment de la création de ta table, on attribut une valeur par défaut à ton champs, par exemple à une SEQUENCE.

ex: ID int DEFAULT nextval('monshema.masequence');

Tel qu'indiqué dans mon exemple, il faut que le nom du shéma soit indiqué avant le nom de la séquence. De même, il faut indiquer le nom du shéma lors de la création de la séquence (plus haut dans ton script).

Ex: CREATE SEQUENCE monshema.masequence START 1;

Si le nom du shéma n'apparaît pas avant le nom de la séquence, alors PostgreSQL cherche la séquence dans le shéma 'public'. Si ma piste est bonne, il faudrait que tu corriges manuellement le script avant de l'insérer dans ta table.

Tiens-moi au courant.

Bonne route


Bonjour, dans mon cas, le pr

gglafouine/ = 28 Août, 2007 - 15:26

Bonjour,
dans mon cas, le premier champ de addgeometrucolum est bien le schema public.

voici un extrait du fichier sql avec le premier champs de la table:

"id_tronc" int8,
"toponyme" varchar(50),
"etat" varchar(25),
"nature" varchar(25),
"code_hydro" varchar(8),
"cours_eau" varchar(8),
"code_bv" varchar(5),
"bv_riv" varchar(5),
"longueur_m" int8);
SELECT AddGeometryColumn('public','hydrologie_gers','the_geom','27582','MULTILINESTRING',2);
CREATE INDEX "hydrologie_gers_the_geom_gist" ON "public"."hydrologie_gers" using gist ("the_geom" gist_geometry_ops);
INSERT INTO "public"."hydrologie_gers" ("id_tronc","toponyme","etat","nature","code_hydro","cours_eau","code_bv","bv_riv","longueur_m",the_geom) VALUES ('320
00001','ruisseau l\'arçon','Intermittent','Cours d\'eau naturel','O6300590','O6--0250','O630','O621','1532','SRID=27582;0105000000010000000102000000260000002
DB29D6FCA5D1C41D34D623002213C4152B81E85BE5D1C41CDCCCCCC1D213C41621058B9CC5D1C410681958340213C412B8716D9D05D1C4185EB513854213C41CFF753E3EB5D1C411B2FDD046B213C
418FC2F5A8825E1C41F0A7C64BD0213C41C3F5285CB75E1C41B29DEF67F1213C411D5A643BD45E1C41448B6CE701223C41AC1C5AE4035F1C41DD2406011F223C41250681956F5F1C41EC51B8DE5C2
23C4133333333A55F1C4185EB51587B223C41FCA9F152B45F1C4160E5D08284223C41B0726811D85F1C411B2FDD4496223C413D0AD7232F601C41AE47E17AC9223C41D122DBF91A601C41CDCCCCCC
E2223C41F853E3A508601C41A245B6F3FD223C412B8716593D601C41D34D621014233C4139B4C8F67D601C41448B6C672A233C410C022B8706611C419CC420B063233C41AE47E1FA27611C419A999
9B989233C41E17A142E62611C419CC42030AF233C41DD240601A6611C41022B87D6DA233C418D976E1213621C412FDD24E6E7233C412FDD24065B621C4125068175FA233C41AAF1D24D9F621C415A
643B5F11243C4125068195F9621C413BDF4F6D4A243C418FC2F52835631C41BE9F1AAF61243C411904560EBA631C41C520B01297243C41EE7C3F3531641C4193180436CF243C41AAF1D24DFB641C4
13F355E9A34253C414A0C02AB54651C41FED478E949253C41F853E325DE651C41643BDFAF79253C41A8C64B374B661C41CBA14576A9253C410000008084661C4133333393B4253C41F4FDD4783F67
1C41D122DBF9D7253C411904568E49671C41D9CEF773EB253C41B6F3FD54B4671C412506819509263C4108AC1C5A48681C41759318642F263C41');


Bonjour, Je trouvais juste

devAno/ = 24 Août, 2007 - 08:21

Bonjour,

Je trouvais juste que cela aurit pu être plus propre de séparer mais ce n'est pas grave.
Merci pour votre aide.


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.