GRASS GIS manual: GRASS-PostgreSQL DB driver

# PostgreSQL DB driver in GRASS

## KEYWORDS

database, attribute table, driver

## DESCRIPTION

The DB (database) driver name in GRASS is pg.

## Creating a PostgreSQL database

A new database is created with `createdb`, see the PostgreSQL manual for details.

## Connecting GRASS to PostgreSQL

    # example for connecting to a PostgreSQL server:
    db.connect driver=pg database="host=myserver.osgeo.org,dbname=mydb"
    # password is asked interactively if not specified:
    db.login user=myname [pass=secret]
    db.connect -p
    db.tables -p

## Supported SQL commands

All SQL commands supported by PostgreSQL. It's not possible to use C-like escapes (with backslash like \n etc) within the SQL syntax.

## Operators available in conditions

All SQL operators supported by PostgreSQL.

## Adding an unique ID column

Import vector module require an unique ID column which can be generated as follows in a PostgreSQL table:

    db.execute sql="ALTER TABLE mytable ADD ID integer"
    db.execute sql="CREATE SEQUENCE mytable_seq"
    db.execute sql="UPDATE mytable SET ID = nextval('mytable_seq')"
    db.execute sql="DROP SEQUENCE mytable_seq"

## Attribute import into PostgreSQL

CSV import into PostgreSQL:

    \h copy
    COPY t1 FROM 'filename' USING DELIMITERS ',';

## Geometry import from PostgreSQL table into GRASS

v.in.db creates a new vector (points) map from a database table containing coordinates. See here for examples.

## PostGIS: PostgreSQL with vector geometry

PostGIS: adds geographic object support to PostgreSQL.

### Example: Import from PostGIS

In an existing PostGIS database, create the following table:

    CREATE TABLE test
    (
     id serial NOT NULL,
     mytime timestamp DEFAULT now(),
     text varchar,
     wkb_geometry geometry,
     CONSTRAINT test_pkey PRIMARY KEY (id)
    ) WITHOUT OIDS;

    # insert value
    INSERT INTO test (text, wkb_geometry)
     VALUES ('Name',geometryFromText('POLYGON((600000 200000,650000
     200000,650000 250000,600000 250000,600000 200000))',-1));

    # register geometry column
    select AddGeometryColumn ('postgis', 'test', 'geometry', -1, 'GEOMETRY', 2);

GRASS can import this PostGIS polygon map as follows:

    v.in.ogr dsn="PG:host=localhost dbname=postgis user=neteler" layer=test \
             output=test type=boundary,centroid
    v.db.select test
    v.info -t test

#### Geometry Converters

- PostGIS with shp2pgsql:
  `shp2pgsql -D lakespy2 lakespy2 test > lakespy2.sql`
- e00pg: E00 to PostGIS filter, see also v.in.e00.
- GDAL/OGR ogrinfo and ogr2ogr: GIS vector format converter and library, e.g. ArcInfo or SHAPE to PostGIS.
  `ogr2ogr -f "PostgreSQL" shapefile ??`

## SEE ALSO

db.connect, db.execute

Database management in GRASS GIS,
Help pages for database modules,
SQL support in GRASS GIS

## REFERENCES

- PostgreSQL web site
- pgAdmin graphical user interface
- GDAL/OGR PostgreSQL driver documentation

Last changed: $Date: 2014-02-03 17:26:56 +0100 (Mon, 03 Feb 2014) $

Main index - Database index - Full index

© 2003-2014 GRASS Development Team, GRASS GIS 6 Reference Manual