Error: ORA-01438: value larger than specified precision allows for this column

Error Message

Using cov2sde command may generate the following error: SDE Error(-51) Underlying DBMS error Extended error code(1438): ORA-01438: value larger than specified precision allows for this column.


Attribute values of the coverage in one or more NUMBER fields are too large for the new fields created in the Oracle table.

Cov2sde first creates an Oracle table to receive the data. This new table's NUMBER fields are defined from the output/display column and decimals fields specified for the coverage's INFO table.

To illustrate, assume we have a single parcel coverage with an AREA field whose output/display width is 3, and its decimal column is set to 1 decimal place. When this AREA field is added to the new Oracle table it will be defined as NUMBER(3,1). The 3 indicates the maximum number of digits Oracle will store in this number field. The 1 means that one of those three digits is reserved for a position to the right of the decimal point. Thus, if the area value in the coverage is 12.3, it would be a legitimate number, but an area value of 123.4 would not be¹.
¹Koch, G., and K. Loney, "Creating, Dropping, and Altering Tables and Views," Oracle: The Complete Reference, Electronic Edition (1997):383.

Solution or Workaround

Changing the output/display column width in the INFO table to a width larger than the attribute value before loading the coverage into the Oracle table eliminates the error, and should allow the data to load.

In the previous example, changing the column width from 3 to 4 or higher will correct the problem.
Find offending INFO column(s) and increase output/display width size using ArcCatalog™
[O-Image] Change Attribute Display width using ArcCatalog
[O-Image] Changing Output Width using Workstation ARCINFO

Note: ArcINFO™ Workstation refers to the column as Output width.
ArcInfo™ Desktop refers to the column as Display width.