10 votos

Sintaxis SQL de GDAL agregar un puesto valores de campo

Tratar de hacer un nuevo campo en mi tabla de atributos y valores de otro campo después de la conversión de caracteres a entero, pero no se puede obtener la sintaxis correcta. Ejecutar esto como script de shell en 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))"

Mensaje de error (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 - go otra con 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))"

Mensaje de error:

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.

0 votos

¿Qué error está recibiendo?

0 votos

@R.K., he añadido el mensaje de error a la operación.

0 votos

¿has probado con CAST en lugar de CONVERT?

14voto

Nikola Puntos 21

Dado que UPDATE no es compatible con OGR SQL Tal y como has indicado en un comentario, debes actualizar la tabla utilizando el Dialecto SQLite disponible en GDAL >= 1.10 con SQLite y SpatiaLite apoyo:

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))"

3voto

shsteimer Puntos 8749

Puede intentar utilizar el operador CAST como dmci ha mencionado así

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

El dialecto SQL soportado por OGR no tiene CONVERT si no recuerdo mal. Se puede compruebe los documentos para más información. Buena suerte.

1 votos

Aparentemente UPDATE no es compatible, consulte aquí: osgeo-org.1560.x6.nabble.com/ Sin embargo, debería estar en el dialecto SQLite pero tampoco tuve suerte con eso..

0 votos

¿Qué versión de GDAL está utilizando?

0 votos

Estoy usando gdal-17

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X