If parameters for database connection are already set with db.connect, they are taken as default values and do not need to be specified each time.
If you have a large number of SQL commands to process, it is much much faster to place all the SQL statements into a text file and use db.execute's input file parameter than it is to process each statement individually in a loop. If multiple instruction lines are given, each SQL line must end with a semicolon.
Please see the individual sql driver pages for how to create a new database.
echo 'create table soils (cat integer, soiltype varchar(10) )' | db.execute
Create a new table using a file with SQL statements:
db.execute driver=odbc database=g60test input=file.sql
Insert new row into attribute table:
echo "INSERT INTO nobugs (id,name,east_gb,north_gb) values (30,'Ala',1657340,5072301)" | db.execute
Update attribute entries to new value based on SQL rule:
echo "UPDATE roads SET travelcost=5 WHERE cat=1" | db.execute
Update attribute entries to new value based on SQL rule:
echo "UPDATE dourokukan SET testc=50 WHERE testc is NULL" | db.execute
Delete selected rows from attribute table:
echo "DELETE FROM gsod_stationlist WHERE latitude < -91" | db.execute
Add new column to attribute table:
echo "ALTER TABLE roads ADD COLUMN length double" | db.execute
Column type conversion - update new column from existing column (all drivers except for DBF):
# 'z_value' is varchar and 'z' is double precision: echo "update geodetic_pts SET z = CAST(z_value AS numeric)" | db.execute
Drop column from attribute table:
echo "ALTER TABLE roads DROP COLUMN length" | db.execute
Drop table (not supported by all drivers)
echo "DROP TABLE fmacopy" | db.execute
Update attribute with multiple SQL instructions in file (e.g., file.sql,
instruction line must end with a semicolon):
UPDATE roads SET travelcost=5 WHERE cat=1; UPDATE roads SET travelcost=2 WHERE cat=2; cat file.sql | db.execute
Join table 'myroads' into table 'extratab' based on common 'cat' column values (not supported by DBF driver):
echo "UPDATE extratab SET names=(SELECT label FROM myroads WHERE extratab.cat=myroads.cat);" | db.execute
Last changed: $Date: 2011-01-14 14:11:41 -0800 (Fri, 14 Jan 2011) $
Main index - database index - Full index
© 2003-2011 GRASS Development Team