Note: This document is for an older version of GRASS GIS that is outdated. You should upgrade, and read the current manual page.
GRASS module <-> | <--> | ODBC Interface | <--> | RDBMS |
GRASS | DBMI driver | unixODBC | ODBC driver | PostgreSQL |
Oracle | ||||
... |
[PostgreSQL] Description = ODBC for PostgreSQL Driver = /usr/lib/libodbcpsql.so Setup = /usr/lib/libodbcpsqlS.so FileUsage = 1
Create DSN (data source name). The DSN is used as database name in db.* modules. Then DSN must be defined in $HOME/.odbc.ini (for this user only) or in /etc/odbc.ini for (for all users) [watch out for the database name which appears twice and also for the PostgreSQL protocol version]. Omit blanks at the beginning of lines:
[grass6test] Description = PostgreSQL Driver = PostgreSQL Trace = No TraceFile = Database = grass6test Servername = localhost UserName = neteler Password = Port = 5432 Protocol = 8.0 ReadOnly = No RowVersioning = No ShowSystemTables = No ShowOidColumn = No FakeOidIndex = No ConnSettings =
To find out about your PostgreSQL protocol, run:
psql -V
db.createdb driver=odbc database=grass6test
To store a table 'mytable.dbf' (here: in current directory) into PostgreSQL through ODBC, run:
db.connect driver=odbc database=grass6test db.copy from_driver=dbf from_database=./ from_table=mytable \ to_driver=odbc to_database=grass6test to_table=mytable
Next link the map to the attribute table (now the ODBC table is used, not the dbf file):
v.db.connect map=mytable.shp table=mytable key=ID \ database=grass6test driver=odbc v.db.connect -p
Finally a test: Here we should see the table columns (if the ODBC connection works):
db.tables -p db.columns table=mytable
Now the table name 'mytable' should appear.
Doesn't work? Check with 'isql <databasename>' if the ODBC-PostgreSQL
connection is really established.
Note that you can also connect mySQL, Oracle etc. through ODBC to GRASS.
You can also check the vector map itself concerning a current link to a table:
v.db.connect -p mytable.shp
which should print the database connection through ODBC to the defined RDBMS.
Last changed: $Date: 2012-09-07 01:51:36 -0700 (Fri, 07 Sep 2012) $