oracle导入报错,文件约8个G,oracle版本 11
文件是从另外一个数据库中导出过来的,文件格式是dmp,在我本地表已经存在,并且已经有大量的数据。IMP-00058:ORACLEerror1438encounteredO...
文件是从另外一个数据库中导出过来的,文件格式是dmp,在我本地表已经存在,并且已经有大量的数据。
IMP-00058: ORACLE error 1438 encountered
ORA-01438: value larger than specified precision allowed for this column
IMP-00028: partial import of previous table rolled back: 166975 rows rolled back
IMP-00017: following statement failed with ORACLE error 2264:
"ALTER TABLE "xj22" ADD CONSTRAINT "PK_xj22" PRIMARY KEY ("xj213") USING I"
"NDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 2062548992 NEXT 104"
"8576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLES"
"PACE "TS_YLFWZB" LOGGING ENABLE "
IMP-00003: ORACLE error 2264 encountered
ORA-02264: name already used by an existing constraint
Import terminated successfully with warnings. 展开
IMP-00058: ORACLE error 1438 encountered
ORA-01438: value larger than specified precision allowed for this column
IMP-00028: partial import of previous table rolled back: 166975 rows rolled back
IMP-00017: following statement failed with ORACLE error 2264:
"ALTER TABLE "xj22" ADD CONSTRAINT "PK_xj22" PRIMARY KEY ("xj213") USING I"
"NDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 2062548992 NEXT 104"
"8576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLES"
"PACE "TS_YLFWZB" LOGGING ENABLE "
IMP-00003: ORACLE error 2264 encountered
ORA-02264: name already used by an existing constraint
Import terminated successfully with warnings. 展开
1个回答
展开全部
我只能说说报错,这是两个问题,最后的提示是“带着警告的成功导入”。也就是说导入是成功的,有很多数据是成功导入的,如果只有这些警告,那么就是有166975行数据没导入。
你的第一个报错是01438,这个的意思是: 值大于为此列指定的允许精度。个人觉得,应该是导入的数据中存在数据的长度或精度是现在的表达不到的,也就是说,现在的表的某一列比原表的长度短,比如原表是number(8,2)现在是number(7,2)或者现在是number(8,1)等等(最大可能是number字段,但是并不完全,字符也可能),要么是长度不足,要么是精度不足,解决这个问题的最好办法就是单张表另表导入(重命名)我记得imp文件可以只导入其中的某张表,所以这个应该可以实现,然后再合并两张表,这样可以查看到底是什么数据,或者可以找出imp文件中的建表语句(这个也简单,同样是重命名导入,只要1=2就行了),然后根据建表语句,修改现在的表的字段长度和精度,然后这部分数据应该就可以导入了。
第二个报错是PK_xj22这个约束的名字已经被用了,你看看现在的PK_xj22是不是和这个一样,如果一样,那么就完全没有任何问题,如果不一样,那么就只能用这个语句建一个其他名称的主键了。
你的第一个报错是01438,这个的意思是: 值大于为此列指定的允许精度。个人觉得,应该是导入的数据中存在数据的长度或精度是现在的表达不到的,也就是说,现在的表的某一列比原表的长度短,比如原表是number(8,2)现在是number(7,2)或者现在是number(8,1)等等(最大可能是number字段,但是并不完全,字符也可能),要么是长度不足,要么是精度不足,解决这个问题的最好办法就是单张表另表导入(重命名)我记得imp文件可以只导入其中的某张表,所以这个应该可以实现,然后再合并两张表,这样可以查看到底是什么数据,或者可以找出imp文件中的建表语句(这个也简单,同样是重命名导入,只要1=2就行了),然后根据建表语句,修改现在的表的字段长度和精度,然后这部分数据应该就可以导入了。
第二个报错是PK_xj22这个约束的名字已经被用了,你看看现在的PK_xj22是不是和这个一样,如果一样,那么就完全没有任何问题,如果不一样,那么就只能用这个语句建一个其他名称的主键了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询