Syntaxe SQL GDAL pour ajouter des valeurs de champ et de vente


9

J'essaie de créer un nouveau champ dans ma table d'attributs et de mettre des valeurs d'un autre champ après la conversion de caractère en entier, mais je ne peux pas obtenir la bonne syntaxe. Je l'exécute comme shell-script dans MSYS.

cd D:/GIS_DataBase/CorineLC/shps_app_and_extr/
myfile=extr_and_app.shp

name=${myfile%.shp}

ogrinfo $myfile -sql "ALTER TABLE $name ADD COLUMN code_num int(3)"
ogrinfo $myfile -sql "UPDATE TABLE $name SET code_num = CONVERT(code_06 As int(3))"

Message d'erreur (MSYS):

Kay@KAY-PC /c/users/kay/desktop/bash
$ sh calc_field_shp.sh
Warning 6: Unsupported column type 'int'. Defaulting to VARCHAR
INFO: Open of `extr_and_app.shp'
      using driver `ESRI Shapefile' successful.
ERROR 1: SQL Expression Parsing Error: syntax error
INFO: Open of `extr_and_app.shp'
      using driver `ESRI Shapefile' successful.

Edit - Un autre coup avec SQLite:

cd D:/GIS_DataBase/CorineLC/shps_app_and_extr/
myfile=extr_and_app.dbf

name=${myfile%.dbf}

ogrinfo $myfile -sql "ALTER TABLE $name DROP COLUMN code_num"

ogrinfo $myfile -sql "ALTER TABLE $name ADD COLUMN code_num integer(3)"
ogrinfo $myfile -dialect SQLite -sql "UPDATE $name SET code_num = CAST(code_06 As integer(3))"

Message d'erreur:

Kay@KAY-PC /c/users/kay/desktop/bash
$ sh calc_field_shp.sh
INFO: Open of `extr_and_app.dbf'
      using driver `ESRI Shapefile' successful.
INFO: Open of `extr_and_app.dbf'
      using driver `ESRI Shapefile' successful.
ERROR 1: SQL Expression Parsing Error: syntax error
INFO: Open of `extr_and_app.dbf'
      using driver `ESRI Shapefile' successful.

Quelle erreur obtenez vous?
RK

@RK, j'ai ajouté le message d'erreur à l'op.
Kay

avez-vous essayé CAST au lieu de CONVERT?
dmci

Je l'ai fait sans succès ..
Kay

Réponses:


13

Comme UPDATE n'est pas pris en charge dans OGR SQL , comme vous l'avez indiqué dans un commentaire, vous devez mettre à jour la table à l'aide du dialecte SQLite SQL disponible dans GDAL> = 1.10 avec la prise en charge de SQLite et SpatiaLite :

ogrinfo $myfile -sql "ALTER TABLE $name ADD COLUMN code_num integer(3)"
ogrinfo $myfile -dialect SQLite -sql "UPDATE $name SET code_num = CAST(code_06 AS integer(3))"

3

Vous pouvez essayer d'utiliser l'opérateur CAST comme dmci l' a mentionné comme ça

ogrinfo $myfile -sql "UPDATE TABLE $name SET code_num = CAST(code_06 as int(3))"

Le dialecte SQL pris en charge par OGR n'a pas CONVERT s'il est correctement rappelé. Vous pouvez consulter la documentation pour plus d'informations. Bonne chance!


1
Apparemment, cela UPDATEn'est pas pris en charge, voir ici: osgeo-org.1560.x6.nabble.com/… Cependant, cela devrait être en dialecte SQLite mais je n'ai pas eu de chance avec ça non plus ..
Kay

Quelle version de GDAL utilisez-vous?
RK

J'utilise gdal-17
Kay

1
Le dialecte SQLite a besoin de GDAL / OGR 1.10 .
scruss
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.