Pages: 1
- Sujet précédent - [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi - Sujet suivant
#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
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
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
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...
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
Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi
Le fichier sql ne doit pas être complet 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
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: 3944
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
Re: [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi
Santanna,
Il y a deux colonnes : "ordonnee__10" et "ordonnee_"
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: 3944
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.
je tente dans quelques minutes la proposition d'insertion via DOS avec --set ON_ERROR_STOP , j'espère avoir plus de succès
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: 3944
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...
Hors ligne
#14 Tue 01 July 2008 17:25
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
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>
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,
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)
Hors ligne
Pages: 1
- Sujet précédent - [PgAdminIII] Executer un fichier SQL de création de tables sous PgAdmi - Sujet suivant