[postgis-users] shp2pgsql - dbf attribute size
Tom Glancy
Tom.Glancy at dnr.state.mn.us
Mon Sep 24 14:45:17 PDT 2007
We are seeing ERROR: value "6906401929" is out of range
for type integer from Postgres when using shp2pgsql to load
shapefiles. Here is what ArcView reports for field properties:
Alias Type Width Decimal
-------------------------------------------------------
Shape FIELD_SHAPEPOLY 8 0
[snip]
Geosect FIELD_DECIMAL 10 0
Georang FIELD_DECIMAL 8 0
[snip]
Values for Geosect:
ERROR: value "6906401929" is out of range for type integer
ERROR: value "6905901328" is out of range for type integer
ERROR: value "4515704005" is out of range for type integer
shp2pgsql defined geosect as "int4", and the insert failed.
We saw similar errors for fields of type FIELD_DECIMAL defined
with Width=5, Decimal=0 when values exceeded about 68000 (we
didn't try to find the exact value where it failed...)
In shp2pgsql.c, the CreateTable function, field widths are
mapped to data types. It appears that int2, int4 and int8
are off by a length of one. We made these changes to
shp2pgsql.c and are no longer seeing the errors:
$ diff ./shp2pgsql.c ../../postgis-1.3.1-original/loader/shp2pgsql.c
539c539
< else if ( field_width < 5 )
---
> else if ( field_width <= 5 )
543c543
< else if ( field_width < 10 )
---
> else if ( field_width <= 10 )
547c547
< else if ( field_width < 19 )
---
> else if ( field_width <= 19 )
Here is some previous discussion...
> strk at refractions.net strk at refractions.net
> Mon Oct 24 09:04:02 PDT 2005
>
[snip]
> Oops... you're right, this means mapping needs to be different
> depending on direction:
>
> [LOADING]
> DBF_SIZE SQL_TYPE LONGEST_TEXT_REP
> 0-5 int2 -99999
> 6-10 int4 -9999999999
> 11-19 int8 -9999999999999999999
> 20-x numeric(size,0)
>
> [DUMPING]
> SQL_TYPE DBF_SIZE LONGEST_TEXT_REP
> int2 6 -32768
> int4 11 -2147483648
> int8 20 -9223372036854775808
> 20-x numeric(size,0)
Regards,
Tom
---------------------------------------
Tom Glancy
tom.glancy-at-dnr.state.mn.us ( mailto:tom.glancy at dnr.state.mn.us )
Minnesota Department of Natural Resources
---------------------------------------
More information about the postgis-users
mailing list