grass-mysql(1grass) Grass User's Manual grass-mysql(1grass)NAME
grass-mysql - MySQL driver
MySQL driver MySQL driver in GRASS MySQL database driver in GRASS enables GRASS to store vector attributes in MySQL server.
Because vector attribute tables are created automaticaly when a new vector is written and the name of the table is the same as the name of
the vector it is good practice to create a new database for each GRASS mapset.
Creating a MySQL database
A new database is created within MySQL:
mysql> CREATE DATABASE mydb;
See the MySQL manual for details.
Driver and database name
GRASS modules require 2 parameters to connect to a database. Those parameters are 'driver' and 'database'. For MySQL driver the parameter
'driver' should be set to value 'mysql'. The parameter 'database' can be given in two formats:
Database name - in case of connection from localhost
String of comma separated list of kye=value options. Supported options are:
dbname - database name
host - host name or IP address
port - server port number
Examples of connection parameters:
db.connect driver=mysql database=mytest
db.connect driver=mysql database='dbname=mytest,host=test.grass.org'
Data types
GRASS supports almost all MySQL data types with following limitations:
Binary columns (BINARY, VARBINARY, TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB) are not not supported. If a table with binary col-
umn(s) is used in GRASS a warning is printed and only the supported columns are returned in query results.
Columns of type SET and ENUM are represented as string (VARCHAR).
Very large integers in columns of type BIGINT can be lost or corrupted because GRASS does not support 64 bin integeres on
most platforms.
GRASS does not currently distinguish types TIMESTAMP and DATETIME. Both types are in GRASS interpreted as TIMESTAMP.
Indexes
GRASS modules automaticaly create index on key column of vector attributes table. The index on key column is important for performance of
modules which update the attribute table, for example v.to.db, v.distance and v.what.rast.
Privileges
Because MySQL does not support groups of users and because only MySQL 'root' can grant privileges to other users GRASS cannot automaticaly
grant select privileges on created tables to group of users.
If you want to give privilege to read data from your mapset to other users you have to ask your MySQL server administrator to grant select
privilege to them on the MySQL database used for that mapset. For example, to allow everybody to read data in from your database 'mydb':
shell> mysql --user=root mysql
mysql> GRANT SELECT ON mydb.* TO ''@'%';
Schemas
Because MySQL does not support database schemas the parameter 'schema' of module db.connect should never be set to any value. If you set
that parameter for MySQL driver GRASS will try to write tables to the specified schema which will result in errors.
Groups
MySQL does not support user groups. Any settings specified by 'group' parameter of module db.connect are ignored by GRASS for MySQL driver.
SEE ALSO
db.connect, SQL support in GRASS GIS
Credits
Development of the driver was sponsored by Faunalia (Italy) as part of a project for ATAC.
AUTHOR
Radim Blazek
Last changed: $Date: 2011-02-07 18:59:50 +0100 (Mon, 07 Feb 2011) $
Help Index
GRASS 6.4.2grass-mysql(1grass)
Check Out this Related Man Page
grass-dbf(1grass) Grass User's Manual grass-dbf(1grass)NAME
grass-dbf - DBF driver
DBF driver DBF driver in GRASS
Defining the DBF driver
The DBF driver is the default driver, in theory no user interaction is required. However, if the settings should be set back from a differ-
ent to the DBF driver, the following step is required:
# keep single quotes:
db.connect driver=dbf database='$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/'
db.connect -p
The dbf/ subdirectory in the mapset must exist or must be created by the user.
Creating a DBF table
Usually DBF tables are created by GRASS when generating a vector map with attributes (and using DBF as default attribute driver).
If a DBF table has to be created manually, db.execute can be used or a spreadsheet application. Also db.copy is sometimes useful as well as
db.in.ogr to import external tables.
Supported SQL commands by DBF driver
ALTER TABLE table ADD [COLUMN] columndef
ALTER TABLE table DROP COLUMN colname
CREATE TABLE table ( columndefs )
DROP TABLE table
SELECT columns FROM table
SELECT columns FROM table WHERE condition
SELECT columns FROM table ORDER BY column
DELETE FROM table
DELETE FROM table WHERE condition
INSERT INTO table VALUES (value1[,value2,...])
INSERT INTO table ( column1[,column2,...] ) VALUES (value1[,value2,...])
UPDATE table SET assignment1[,assignment2,...]
UPDATE table SET assignment1[,assignment2,...] WHERE condition
Operators available in conditions
"=" : equal
"<" : smaller than
"<=" : smaller/equal than
">" : larger than
">=" : larger/equal than
"<>" : not equal
"~" : Substring matching (non-standard SQL)
"%" : Substring matching (limited functionality)
Arithmetic expressions using constants and field values are allowed in condition clauses and in the RHS of assignments.
Usual precedence rules and bracketing (using '(' and ')') are supported.
Type conversion is performed if necessary (experimental).
Conditions allow boolean expressions using the AND, OR and NOT operators, with the usual precedence rules.
NULLs can be tested by 'colname IS NULL' in conditions. The negation is 'colname NOT NULL'.
Sorting: Empty fields in a character column are sorted to the end.
LIMITATIONS OF THE DBF DRIVER
The DBF driver supports only a few SQL statements since the DBF tables are intended for simple table storage. DBF column names are limited
to 10 characters (as defined in the DBF specifications). For example,
aggregate functions (sum, count, min, max,...) are not supported in SELECT clauses;
mathematic functions (sin, cos, exp, log,...) are not supported in expressions;
SQL query with IN are not supported.
ERROR MESSAGES
An error message such as:
DBMI-DBF driver error:
SQL parser error: syntax error, unexpected NAME processing 'IN'..
indicates that an unsupported SQL statement (here, 'IN') was used. The only solution is to switch the DBMI backend to a real SQL engine
(SQLite, PostgreSQL, MySQL etc.). See SQL support in GRASS GIS.
An error message such as:
DBMI-DBF driver error:
SQL parser error: syntax error, unexpected DESC, expecting NAME processing 'DESC'
indicates that a column name corresponds to a reserved SQL word (here: 'DESC'). A different column name should be used. If this happens
during import with v.in.ogr, the cnames parameter can be used to assign different column names on the fly.
SEE ALSO
db.connect, SQL support in GRASS GIS
DBF Specifications (Shapelib)
Last changed: $Date: 2011-02-07 18:59:50 +0100 (Mon, 07 Feb 2011) $
Help Index
GRASS 6.4.2grass-dbf(1grass)