记录对计算机的理解,对软件开发的理解,工作的收获,工作的体会,工作的感觉,生活的点滴。QQ:56074910(添加请注明来意)

GIS Worker

王永平的博客

shape文件向sde导入过程中出现:ora-01438的解决办法

我们在实际工作中发现,当我们从shape文件导入到sde数据库时,对于浮点型的字段,经常出现如下错误:

Underlying DBMS error[ORA-01438:值大于此列指定的允许精度]

刚开始打开shape图层的字段和sde图层的字段做了一一对应,没看出什么问题,觉得纳闷,后来经过一番折腾,困扰了很久的问题得以解决。

原来,shape图层的浮点型字段的定义标准和sde的标准不一致造成的。

shape字段定义中没有length的说法,在定义一个浮点字段时,只需要定义precision(精度)和scale(小数位),这样就说明字段的总长度是precision+scale。

比如说我们定义:precision=5,scale=3,这样我们输入的值可以是:12345.678,也可以是123456.78。

然而,sde里面是这样的,如果我们直接用shape的字段转换成sde的字段后,precision是总长度,scale是小数位,总长度是precision+scale,整数部分就只能是precision,

如前面的定义:precision=5,scale=3,这样我们输入的值只可以是:12345.678,也可以是1.234。如果shape字段的只存在123456.78,那就报错了。

还有一点,sde好像会根据浮点的precision的长度自动定义为float或者double。

解决的办法:

将sde的对应浮点字段的precision(sde字段)=precision(shape字段)+scale(shape字段)

从sde导出后,可以按照反向处理:precision(shape字段)=precision(sde字段)-scale(sde字段)

不过这也要根据你现有图层中存在的数据内容作适当的调整。

posted on 2009-04-30 11:26  Helper  阅读(673)  评论(0编辑  收藏  举报

导航