GDAL SQL सिंटैक्स फ़ील्ड को एक पुट मान जोड़ने के लिए


9

मैं अपनी विशेषता तालिका में एक नया क्षेत्र बनाने की कोशिश करता हूं और चरित्र से पूर्णांक में परिवर्तित करने के बाद किसी अन्य फ़ील्ड से मान डालता हूं, लेकिन सही सिंटैक्स प्राप्त नहीं कर सकता। मैं इसे 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))"

त्रुटि संदेश (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.

संपादित करें - 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))"

त्रुटि संदेश:

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.

आप क्या त्रुटि प्राप्त कर रहे हैं?
आरके

@ आरके, मैंने ऑप में त्रुटि संदेश जोड़ा।
काय

क्या आपने CONVERT के बजाय CAST की कोशिश की है?
dmci

मैंने सफलता के बिना किया ..
Kay

जवाबों:


13

क्योंकि OGR SQL में UPDATE समर्थित नहीं है , जैसा कि आपने एक टिप्पणी में कहा है, आपको GDAL में उपलब्ध SQLite SQL बोली का उपयोग करके तालिका को अद्यतन करना चाहिए > = 1.10 SQLite और 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

आप CAST ऑपरेटर का उपयोग करने का प्रयास कर सकते हैं क्योंकि dmci ने ऐसा उल्लेख किया है

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

अगर सही ढंग से याद किया जाए तो OGR द्वारा समर्थित SQL बोली में CONVERT नहीं होता है। आप अधिक जानकारी के लिए डॉक्स की जांच कर सकते हैं । सौभाग्य!


1
मालूम होता है UPDATE: समर्थित नहीं है, यहाँ देख osgeo-org.1560.x6.nabble.com/... या तो .. हालांकि, यह SQLite बोली में होना चाहिए लेकिन मैं उस के साथ कोई किस्मत थी,
Kay

GDAL के किस संस्करण का आप उपयोग कर रहे हैं?
आरके

मैं gal-17
Kay

1
SQLite बोली को GDAL / OGR 1.10 की आवश्यकता है ।
scruss
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.