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 Mon 30 June 2008 16:49

noxia
Participant occasionnel
Date d'inscription: 30 Jun 2008
Messages: 48

[PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Bonjour

Je dispose d'un fichier *.sql issu d'un shapefile (obtenu avec shp2pgsql ).
J'essai de l'executer sous PgAdmin (query avec la petite flèche verte!) mais j'obtiens ce message d'erreur:

Code:

ERROR: syntax error at or near "1"
État SQL :42601
Caractère : 807

je n'ai pourtant pas modifié le code obtenu par shp2pgsql (sauf j'ai enlevé les caractères speciaux (éàè&...etc.) . Du coup je ne vois pas du tout oùest le problème, je pensais que les .sql obtenus avec shp2pgsql étaient direcement executables!

pour renseignement, voici l'endroit où PgAdmin "bloque" dans mon fichier *.sql:

Code:

...
"nom-regio" varchar(30));
SELECT AddGeometryColumn('','communes','the_geom','-1','MULTIPOLYGON',2);
COPY "communes" ("id_geofla","code_commu","insee_comm","nom_commun","statut","population","superficie","abscisse_c","ordonnee_","abscisse_c__9","ordonnee___10","altitude_m","code_canto","code_arron","code_depa","nom_depar","code_regi","nom_regio",the_geom) FROM stdin;
[b][color=red]1[/color][/b]    001    01001    L-ABERGEMENT-CLEMENCIAT    Commune simple
...
...

Dernière modification par noxia (Mon 30 June 2008 16:50)

Hors ligne

 

#2 Mon 30 June 2008 17:18

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

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Bonjour,

Visiblement il manque des colonnes dans la ligne de données, il y a 5 colonnes au lieu de 19, de plus la 5eme doit être une superficie, dans la ligne de données on a "simple" ca va poser problème.

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 Mon 30 June 2008 17:19

noxia
Participant occasionnel
Date d'inscription: 30 Jun 2008
Messages: 48

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

pourquoi le shp2pgsql n'a pas crée les lignes "insert into .... values ('1','001', ...) ??
apparemnt c'est ce qu'il aurait dûgénérer (cf le  site  )

Dernière modification par noxia (Mon 30 June 2008 17:20)

Hors ligne

 

#4 Mon 30 June 2008 17:36

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

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Bonjour Noxia,

pgsql2shp  génère par défaut des lignes COPY ... IN stdin; beaucoup plus rapide, surtout avec plusieurs 10e de Mo de données 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

 

#5 Tue 01 July 2008 10:38

noxia
Participant occasionnel
Date d'inscription: 30 Jun 2008
Messages: 48

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

C'est une excellente remarque, j'ai effectivement des colonnes en trop , je suis en train de nettoyer mon fichier.
(hier j'avais tronqué les résultats, du coup n'apparaissent que 5 colonnes résultat, mais en fait j'en ai quelque chose comme 20, et parfois 21 selon les lignes)

si le "-D" de shp2pgsql est moins gourmand en temps que le "-c", ça me convient tout à fait, étant donné la taille des fichiers que j'ai à importer sous pdadmin.

je me demandais juste hier, si cela ne posait pas de problèmes d'importation de ne pas avoir de "insert into " etc dans le fichier *.sql, mais apparement vous semblez dire que non, donc ça me va.
j'attend que mon fichier soit nettoyé pour vérifier si l'importation s'éxécute réellement (ce qui serait super)

Dernière modification par noxia (Tue 01 July 2008 11:05)

Hors ligne

 

#6 Tue 01 July 2008 15:04

noxia
Participant occasionnel
Date d'inscription: 30 Jun 2008
Messages: 48

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

bonjour, ça ne fonctionne pas... sad

voici le début de ma table *.sql

Code:

BEGIN;
CREATE TABLE "communes" (gid serial PRIMARY KEY,
"id_geofla" int8,
"code_commu" varchar(3),
"insee_comm" varchar(5),
"nom_commun" varchar(50),
"statut" varchar(20),
"population" float8,
"superficie" int8,
"abscisse_c" int8,
"ordonnee_" int8,
"abscisse_c__9" int8,
"ordonnee___10" int8,
"altitude_m" int8,
"code_canto" varchar(2),
"code_arron" varchar(1),
"code_depa" varchar(2),
"nom_depar" varchar(30),
"code_regi" varchar(2),
"nom_regio" varchar(30));
SELECT AddGeometryColumn('','communes','the_geom','-1','MULTIPOLYGON',2);
COPY "communes" ("id_geofla","code_commu","insee_comm","nom_commun","statut","population","superficie","abscisse_c","ordonnee_","abscisse_c__9","ordonnee___10","altitude_m","code_canto","code_arron","code_depa","nom_depar","code_regi","nom_regio",the_geom) FROM stdin;
1    001    01001    L-ABERGEMENT-CLEMENCIAT    communesimple    0.7    1570    7996    21311    8000    21314    242    10    2    01    AIN    82    RHONE-ALPES    0106000000010000000103000000010000001200000000000000046B284100000080B63B4041000000006868284100000080D43B4041000000003E682841000000001F3D4041000000008C602841000000809B3D4041000000008E6328410000008042404041000000001E60284100000000D542404100000000F05B284100000000D443404100000000C25C2841000000807B44404100000000D65F284100000080BC484041000000004E6A2841000000006049404100000000346D2841000000006A49404100000000FA702841000000806E47404100000000B26D2841000000805645404100000000607D284100000080134340410000000090742841000000006C414041000000008672284100000080CD3D404100000000E06D284100000080EA3B404100000000046B284100000080B63B4041

et voici le code erreur:

Code:

ERROR: syntax error at or near "e"
État SQL :42601
Caractère : 1

comment savoir de quel "e" parle pgadmin?

Hors ligne

 

#7 Tue 01 July 2008 15:23

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

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Le fichier sql ne doit pas être complet wink Peut être s'agit il d'une ligne plus loin.

Lorsque vous importer un fichier sql avec psql, utiliser l'option --set ON_ERROR_STOP= vous aurez le numéro de la ligne où l'erreur se trouve et il s'arrétera de suite.

Code:

 psql -d maBase --set ON_ERROR_STOP= -f monFichier.sql

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

 

#8 Tue 01 July 2008 15:27

Sylvain33
Participant assidu
Lieu: Mauritius
Date d'inscription: 13 Feb 2007
Messages: 320
Site web

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Normalement pgadmin souligne l'occurence qui ne va pas également !
Très bien ce petit bout de code Yves, merci

Dernière modification par Sylvain33 (Tue 01 July 2008 15:28)

Hors ligne

 

#9 Tue 01 July 2008 15:29

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3807

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Salut
je n'y connais pas trop grand chose à Postgresql
mais dans la bordure grise de ta fenêtre SQL, est-ce que tu n'as pas un "pseudo-cercle" blanc au niveau d'une ligne donnée? Par défaut, chez moi, quand il y a une erreur dans une commande SQL, ce signe apparait au niveau de la ligne concernée


Autre chose, est-ce qu'il n'y a pas un moyen via l'invite de commandes d'intégrer le fichier sql en question? Je crois que c'est la fonction psql. Mais peut-être vaudrait-il mieux aller au bout de la méthode via PgAdminIII pour découvrir un autre moyen!!!

Je vois que d'autres ont déjà apporté l'info

Dernière modification par SANTANNA (Tue 01 July 2008 15:41)

Hors ligne

 

#10 Tue 01 July 2008 15:37

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

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Santanna,

Il y a deux colonnes : "ordonnee__10" et "ordonnee_" 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

 

#11 Tue 01 July 2008 15:42

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3807

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

oui, je viens à l'instant de le remarquer.[img]sad[/img]

Hors ligne

 

#12 Tue 01 July 2008 16:25

noxia
Participant occasionnel
Date d'inscription: 30 Jun 2008
Messages: 48

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

bonjour à tous,
tout d'abord merci de vos réponses, voici les miennes:
le point blanc se situe à la première ligne (soit:

Code:

 1    001    01001    L-ABERGEMENT-CLEMENCIAT    communesimple  0.7 etc.

)

et c'est la partie que je viens de copier coller qui est surlignée en vert...
Etant donné que le point rond-blanc est sur la ligne indiquée + est surlignée en vert, je suppose que qq cloche dans l'insertion.
A fortiori de la ligne 1.
Mais actuellement je sèche.
J'ai personnellement remarqué que ma colonne " grid serial PRMARY KEY" n'est pas apellée dans le COPY, ou alors appellée sous la forme " the_geom"
j'ai donc renommé "grid" par "the_geom" --> mais sans succès.
J'ai ensuite tenté de déplacer "grid serial PRIMARY KEY en bas de creation de la table" histoire que ça "colle" avec l'odre d'insertion (même si je sais bien que l'ordre d'insertion est indiqué avec la ligne COPY ("..","...",...")
mais rine n'y fait, ça ne veut pas copier.
sad

je tente dans quelques minutes la proposition d'insertion via DOS avec --set ON_ERROR_STOP , j'espère avoir plus de succès sad

Dernière modification par noxia (Tue 01 July 2008 16:27)

Hors ligne

 

#13 Tue 01 July 2008 17:07

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3807

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Je regarde la ligne en question et ne vois pas trop ce qui peut être à l'origine de l'erreur.
mais j'ai une remarque à faire. Ce que je vais dire n'a rien à voir avec le problème que tu poses mais plutôt avec les données que tu gères. Est-il normal que la valeur prise par ta population soit un nombre à virgule?
Et le statut de la commune n'est-ce pas "commune simple" au lieu de "communesimple"? Je ne crois pas que ce soit cela le problème étant donné qu'il ne me semble pas que ce soit des valeurs "normalisées". Mais comme il y a un "e" en jeu...big_smile

Hors ligne

 

#14 Tue 01 July 2008 17:25

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

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Noxia,

Je pense que tu devrais créer ton SQL à partir de shp2pgsql est voir ce qui pose problème, évite de modifier ce fichier SQL au risque de tourner en rond wink

Voilà le dernier conseil que je peut t'apporter avant de partir en congés :p

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

 

#15 Tue 01 July 2008 17:26

Guillaume Sueur
Participant assidu
Lieu: Toulouse
Date d'inscription: 23 Sep 2005
Messages: 331
Site web

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

vérifie que ton client_encoding est bien réglé sur LATIN1 dans
postgresql.conf

Guillaume

Hors ligne

 

#16 Tue 01 July 2008 17:56

noxia
Participant occasionnel
Date d'inscription: 30 Jun 2008
Messages: 48

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Bonjour

Effectivement, mon client_encoding était enregistré à ascii, je l'ai modifié en LATIN1 suivant vos conseils.
J'ai cependant relancé mon fichier sql, qui ne veux toujours pas fonctionner.

Pour répondre à Mr. Jacolin (bonnes vacances, vous en avez de la chance!), il s'agit pourtant du fichier *.sql issu de shp2pgsql !!!

A Santanna : j'ai effectivement modifié "commune simple" en "communesimple" afin d'être certaine que PgAdmin ne prenne pas "commune" et "simple" pour deux colonnes.
(à titre purement informatif, j'ai crée pour cela un script python, qui a recodé tous les caractères spéciaux et les termes compromettant (du style "commune simple). )

...j'en suis donc au même point qu'avant: bien qu'ayant généré mon fichier sql par shp2pgsql, ce fichier a comporté beaucoup de caractères spéciaux et j'ai dû le nettoyer
Et: il ne s'execute pas, il m'indique toujours l'erreur autours du "1" , même après avoir changé client_encodint en "LATIN1" .

...je me suis ensuite connectée sous la sesion postgres de windows pour lancer la commande DOS indiqué ci heut par Mr. Jacolin

Code:

C:\Documents and Settings\postgres>psql -d cartographie_h --set ON_ERROR_STOP= -
f D:\moi\super2.sql

il m'indique l'erreur suivant:

Code:

psql:D:/moi/super2.sql:1: ERROR:  syntax error at or near "´╗┐BEGIN"
LINE 1: ´╗┐BEGIN;
        ^

C:\Documents and Settings\postgres>

sad sad

Dernière modification par noxia (Tue 01 July 2008 18:02)

Hors ligne

 

#17 Tue 01 July 2008 22:39

Guillaume Sueur
Participant assidu
Lieu: Toulouse
Date d'inscription: 23 Sep 2005
Messages: 331
Site web

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

tu oublies le -U dans ta commance psql, en indiquant le login de
postgres (postgres ?)

quel est le jeu de caractères de ta base ?

Guillaume

Hors ligne

 

#18 Wed 02 July 2008 09:26

noxia
Participant occasionnel
Date d'inscription: 30 Jun 2008
Messages: 48

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

Bonjour,

Guillaume Sueur a écrit:

tu oublies le -U dans ta commance psql, en indiquant le login de
postgres (postgres ?)

quel est le jeu de caractères de ta base ?

Guillaume


ma base nommée "cartographie_h" stocke des données utilisant le "sql_ascii encoding" (d'après ce que m'annonce le message "astuce pgadmin" qui s'ouvre automatiquement lorsque je me connecte sur ma base.
apparement en étant connectée sous la session windows de postgres, je n'arrive pas a modifier les propriétés de ma base "cartographie_h" (il me semblait pourtant avoir changé manuellement l'encoding hier en LATIN1.)
comment fallait -il le changer? personnellement j'ai ouvert manuellement le fichier postgresql.conf et ai remplacé
client_encoding="ascii" par
client_encoding="LATIN1"

(edit)
j'ai tenté ce matin de créer mes tables sur une autre base de données, celle qui existe déjà: "postgis"

Code:

C:\Documents and Settings\postgres>psql -d postgis --set ON_ERROR_STOP= -f D:\he
lene\super2.sql

voici l'erreur générée

Code:

psql:D:/helene/super2.sql:1: ERROR:  syntax error at or near "´╗┐BEGIN"
LINE 1: ´╗┐BEGIN;
        ^

je me demande donc si c'est normal que derrière mon "begin" il y ait un ";" dans mon fichier sql ?
dois-je l'enlever?

Dernière modification par noxia (Wed 02 July 2008 09:43)

Hors ligne

 

#19 Wed 02 July 2008 10:09

noxia
Participant occasionnel
Date d'inscription: 30 Jun 2008
Messages: 48

Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi

salut!

juste pour dire que j'ai trouvé un moyen de m'en sortir, et en deux secondes ma table s'est remplie! (ça faisait 2 semaines que je travaillait dessus, autant dire que je suis dégouttée)
pour ceux que ça interesse voici ce que j'ai fait:

1) connexion sous la session postgres de windows
2) ouverture de DOS  (exécuter --> cmd.exe )
3) entrer la ligne de commande suivante:

Code:

C:\Documents and Settings\postgres>shp2pgsql -c D:\moi\cartes\com_mif commune
s > D:\helene\super1.sql

avec : com_mif mon fichier shapefile
"commune" le nom de la table que contient le shapefile
DOS génère le résultat suivant:

Code:

Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]

ce qui signifie que votre fichier *.sql est crée, et se trouve sur D:/moi/cartes et se nomme "super1.sql"

4)entrer sous DOS la commande suivante:

Code:

psql -d postgis --set ON_ERROR_STOP= -f super1.sql

DOs s'execute
5)allez sous PgADMIN, ouvrez votre base de données POSTGIS, vérifiez que votre table "communes" existe
6)vérifiez que les données de "communes" sont réellement entrée  ("communes" clic droit "afficher les données)

ma difficulté venait donc du fait que j'avais mis un "-D" au lieu d'un "-C" dans la création du fichier *.sql ...
je tenais à remercier tout ceux qui m'ont aidé. (mainteannt je dois voir si j'arrive à faire quelque chose de ces données, hum)
wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB