Intento crear un nuevo campo en mi tabla de atributos y poner valores de otro campo después de convertir de carácter a entero, pero no puedo obtener la sintaxis correcta. Ejecuto esto como shell-script 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.
Editar - Otra opción 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.
Respuestas:
Debido a que UPDATE no es compatible con OGR SQL , como usted indicó en un comentario, debe actualizar la tabla utilizando el dialecto SQLite SQL disponible en GDAL> = 1.10 con soporte SQLite y SpatiaLite :
fuente
Puede intentar usar el operador CAST como dmci ha mencionado así
El dialecto SQL admitido por OGR no tiene CONVERTIR si se recupera correctamente. Puede consultar los documentos para obtener más información. ¡Buena suerte!
fuente
UPDATE
no es compatible, vea aquí: osgeo-org.1560.x6.nabble.com/… Sin embargo, debería estar en el dialecto SQLite pero tampoco tuve suerte con eso ...