[GIS] Unable to upload large vector file to Postgis error:Geometry type (MultiSurface) does not match column type (MultiPolygon)

file-geodatabaseogr2ogrpostgispostgresql

I am unable to upload this large vector file of 30GB(Multipart polygon in ArcGIS FGDB). ogr2ogr throws the following error

Warning 1: Geometry to be inserted is of type Multi Surface, whereas the layer geometry type is Multi Polygon.
Insertion is likely to fail
ERROR 1: COPY statement failed.
ERROR: Geometry type (MultiSurface) does not match column type (MultiPolygon)
CONTEXT: COPY fuzzy_2016, line 17643, column wkb_geometry: "010C000020110F000002000000010A0000000100000001020000001500000

Note: The same dataset works fine in ArcGIS environment.

Best Answer

The first thing to take a look at, is the specific feature being referenced in the error string. Something about it is making PostGIS think it is a MultiSurface feature. I know you have imported these datasets successfully before, so please provide some information about them. What is the source? How were they created?

PostGIS is pretty strict about data types matching up. If you don't specify the target layer type, PostGIS will guess what type to use, basically by assigning the type of the first features that it imports in the layer. If it then runs across a feature that it thinks is a different type, it will throw an error.
I would try specifying the layer type using -nlt as part of your import command.
Example:
ogr2ogr -overwrite -f "PostgreSQL" PG:"host=xxx user=xxxxx dbname=xxxx password=xxxx port=5432" "X:\postgresData\Fuzzy_2016.gdb" "fuzzy_2016" -nlt MULTIPOLYGON

Please note that I also added the -overwrite command to your string as this will ensure any existing table matching that name, and thus formatting, is dropped so it doesn't interfere. If you want to append to an existing table, or some such, then do this testing into a temp table, and change the table name to a permanent table once you have the kinks worked out.
Use the New Layer Name command -nln to do this.
Example:
ogr2ogr -overwrite -f "PostgreSQL" PG:"host=xxx user=xxxxx dbname=xxxx password=xxxx port=5432" "X:\postgresData\Fuzzy_2016.gdb" "fuzzy_2016" -nln fuzzy_2016_temp -nlt MULTIPOLYGON
If it continues to give you fits, you could write an sql query to filter out this particular feature during the import and see if it is able to process the rest.