## NAME

v.db.update.py - Updates a column in the attribute table connected to a vector map.

## KEYWORDS

vector, attribute table, database

## SYNOPSIS

v.db.update.py
v.db.update.py --help
v.db.update.py map=name layer=string column=name [value=string] [query_column=name] [where=sql_query] [--help] [--verbose] [--quiet] [--ui]

### Flags:

--help
  Print usage summary
--verbose
  Verbose module output
--quiet
  Quiet module output
--ui
  Force launching GUI dialog

### 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 inhab >= 10000

## 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'"

## SEE ALSO

db.execute, v.db.addcolumn, v.db.addtable, v.db.connect, v.db.droptable, v.db.join, v.db.select
GRASS SQL interface

## AUTHOR

Moritz Lennert (mlennert@club.worldonline.be)

Last changed: $Date: 2014-12-20 15:33:06 +0100 (so, 20 XII 2014) $

Main index | Vector index | Topics index | Keywords index | Full index

© 2003-2015 GRASS Development Team, GRASS GIS 7.0.0 Reference Manual