v.db.update
Updates a column in the attribute table connected to a vector map.
v.db.update map=name layer=string column=name [value=string] [query_column=name] [where=sql_query] [sqliteextra=name] [--verbose] [--quiet] [--qq] [--ui]
Example:
v.db.update map=name layer=1 column=name
grass.script.run_command("v.db.update", map, layer="1", column, value=None, query_column=None, where=None, sqliteextra=None, verbose=False, quiet=False, superquiet=False)
Example:
gs.run_command("v.db.update", map="name", layer="1", column="name")
Parameters
map=name [required]
Name of vector map
Or data source for direct OGR access
layer=string [required]
Layer number or name
Vector features can have category values in different layers. This number determines which layer to use. When used with direct OGR access this is the layer name.
Default: 1
column=name [required]
Name of attribute column to update
value=string
Literal value to update the column with
query_column=name
Name of other attribute column to query, can be combination of columns (e.g. co1+col2)
where=sql_query
WHERE conditions of SQL statement without 'where' keyword
Example: income < 1000 and population >= 10000
sqliteextra=name
Name of SQLite extension file for extra functions (SQLite backend only)
--help
Print usage summary
--verbose
Verbose module output
--quiet
Quiet module output
--qq
Very quiet module output
--ui
Force launching GUI dialog
map : str, required
Name of vector map
Or data source for direct OGR access
Used as: input, vector, name
layer : str, required
Layer number or name
Vector features can have category values in different layers. This number determines which layer to use. When used with direct OGR access this is the layer name.
Used as: input, layer
Default: 1
column : str, required
Name of attribute column to update
Used as: input, dbcolumn, name
value : str, optional
Literal value to update the column with
query_column : str, optional
Name of other attribute column to query, can be combination of columns (e.g. co1+col2)
Used as: input, dbcolumn, name
where : str, optional
WHERE conditions of SQL statement without 'where' keyword
Example: income < 1000 and population >= 10000
Used as: input, sql_query, sql_query
sqliteextra : str, optional
Name of SQLite extension file for extra functions (SQLite backend only)
Used as: input, file, name
verbose: bool, optional
Verbose module output
Default: False
quiet: bool, optional
Quiet module output
Default: False
superquiet: bool, optional
Very quiet module output
Default: False
DESCRIPTION
v.db.update assigns a new value to a column in the attribute table connected to a given map. The value parameter allows updating with a literal value. Alternatively, with the qcol parameter values can be copied from another column in the table or be the result of a combination or transformation of other columns.
NOTES
v.db.update is just a front-end to db.execute to allow easier usage.
For complex SQL UPDATE statements, db.execute should be used.
EXAMPLES
Replacing of NULL values
In this example, selectively display lakes without (blue) and with NULL (red) are shown to find out which type is undefined. In the original map there are lakes missing FTYPE attribute which are wetlands along streams. These NULL attributes are replaced with the landuse type WETLAND:
g.copy vect=lakes,mylakes
v.db.select mylakes
v.db.select mylakes where="FTYPE IS NULL"
# display the lakes, show undefined FTYPE lakes in red
g.region vector=mylakes
d.mon wx0
d.vect mylakes where="FTYPE NOT NULL" type=area col=blue
d.vect mylakes where="FTYPE IS NULL" type=area col=red
# replace NULL with FTYPE WETLAND
v.db.update mylakes col=FTYPE value=WETLAND \
where="FTYPE IS NULL"
v.db.select mylakes
Updating of columns with on the fly calculation
Spearfish example: adding new column, copying values from another table column with on the fly calculation:
g.copy vect=fields,myfields
v.db.addcolumn myfields col="polynum integer"
v.db.update myfields col=polynum qcol="cat*2"
v.db.select myfields
Type casting
Type cast (type conversion) of strings to double precision (unsupported by DBF driver):
g.copy vect=geodetic_pts,mygeodetic_pts
v.db.update mygeodetic_pts col=zval qcol="CAST(z_value AS double precision)" \
where="z_value <> 'N/A'"
Updating of columns with on the fly calculation (SQLite extended functions)
Note: this requires SQLite extended functions. For details see the GRASS GIS Wiki (compilation of libsqlitefunctions.so and libsqlitefunctions.dll).
North Carolina data set example: adding new column, copying values from another table column with on the fly calculation:
g.copy vect=precip_30ynormals,myprecip_30ynormals
v.db.addcolumn myprecip_30ynormals column="logjuly double precision"
v.db.update myprecip_30ynormals column="logjuly" query_column="log(jul)" \
sqliteextra=$HOME/sqlite_extensions/libsqlitefunctions.so
v.db.select myprecip_30ynormals columns=jul,logjuly
jul|logjuly
132.842|4.88916045210132
127|4.84418708645859
124.206|4.82194147751127
104.648|4.65060233738593
98.298|4.58800368106618
...
SEE ALSO
db.execute, v.db.addcolumn, v.db.addtable, v.db.connect, v.db.droptable, v.db.join, v.db.select
AUTHOR
Moritz Lennert (mlennert@club.worldonline.be)
SOURCE CODE
Available at: v.db.update source code
(history)
Latest change: Friday Feb 07 19:16:09 2025 in commit a82a39f