Sintassi SQL GDAL per aggiungere campo e valori put


9

Provo a creare un nuovo campo nella mia tabella degli attributi e inserisco i valori da un altro campo dopo la conversione da carattere a numero intero ma non riesco a ottenere la sintassi corretta. Lo eseguo come shell-script in 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))"

Messaggio di errore (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.

Modifica - Un altro passo 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))"

Messaggio di errore:

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.

Che errore stai ricevendo?
RK,

@RK, ho aggiunto il messaggio di errore all'op.
Kay,

hai provato CAST invece di CONVERT?
dmci,

L'ho fatto senza successo ..
Kay,

Risposte:


13

Poiché UPDATE non è supportato in OGR SQL , come indicato in un commento, è necessario aggiornare la tabella utilizzando il dialetto SQLite SQL disponibile in GDAL> = 1.10 con supporto SQLite e 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

Puoi provare a usare l'operatore CAST come ha detto dmci in questo modo

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

Il dialetto SQL supportato da OGR non ha CONVERT se richiamato correttamente. Puoi consultare i documenti per maggiori informazioni. In bocca al lupo!


1
Apparentemente UPDATEnon è supportato, vedi qui: osgeo-org.1560.x6.nabble.com/… Tuttavia, dovrebbe essere in dialetto SQLite ma non ho avuto fortuna con quello, neanche ..
Kay

Quale versione di GDAL stai usando?
RK,

Sto usando gdal-17
Kay

1
Il dialetto SQLite richiede GDAL / OGR 1.10 .
scruss
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.