我需要向oracle里面导入ACCESS数据,从ACCESS点右键导入成功,接着允许cmd,在sqlplus里面执行4条sql语句,第一条顺利完成,第二条就无法完成,要等很长时间10小时左右,最后报错 唯一约束条件错误。
问题在哪里?希望大侠们帮忙解决下
为什么报错时间要那么久,有什么方法能加快报错吗?

解决方案 »

  1.   


    INSERT INTO co2521_data (rggt_id,CPMC,PPMC,GGXH,SSQ,DQ,CS,ZTXZ,WZZT,ZMJ,ZZS,FONTSIZE,WZXSFL,YMGG,WZNRFL,JCZB1,JCZB2,JCZB3,JCZB4,JCZB5,INFO_1,WZH,MTRQ,info_3,bmmc,info_2,MTMC)  SELECT xl_rggt_id_hair.NEXTVAL rggt_id,product,brand,model,province,city_type,city,store_type,STORE,SALES,sales_price,avg_price,product_type,product_cubage,ref_CT,air_power,air_YN,ref_DN,wm_LCD,wm_DRY,ctv_SCR,MONTH,TO_DATE(data,'yyyy-mm-dd'),'0',storenum,first_time,MTMC FROM SALES2008041306;
    commit;
    INSERT INTO co2521_smy (rggt_id) SELECT rggt_id FROM co2521_data WHERE INFO_3='0'; 
    commit;
    INSERT INTO co2521_rggsjk (rggt_id,CPMC,PPMC,GGXH,SSQ,DQ,CS,ZTXZ,WZZT,ZMJ,ZZS,FONTSIZE,WZXSFL,YMGG,WZNRFL,JCZB1,JCZB2,JCZB3,JCZB4,JCZB5,INFO_1,WZH,MTRQ,bmmc,info_2,MTMC) SELECT rggt_id,CPMC,PPMC,GGXH,SSQ,DQ,CS,ZTXZ,WZZT,ZMJ,ZZS,FONTSIZE,WZXSFL,YMGG,WZNRFL,JCZB1,JCZB2,JCZB3,JCZB4,JCZB5,INFO_1,WZH,MTRQ,bmmc,info_2,MTMC FROM co2521_data  WHERE INFO_3='0';
    commit;
    INSERT INTO all SELECT * FROM co2521_data WHERE INFO_3='0';
    commit;
    call splitinfo(2521);
      

  2.   

    最有可能你co2521_data有几个主键
    造成rggt_id有重复的数据
    你改成这样试试INSERT INTO co2521_smy (rggt_id) SELECT distinct rggt_id FROM co2521_data WHERE INFO_3='0';
      

  3.   

    应该还是你的co2521_smy 表里面的主键冲突了,另外想问一下,你的co2521_data有多大?
      

  4.   

    要么删除约束,直接插入(建议);要么写一个存储过程,一条条插入,遇见错误的跳过(考虑);要么insert时过滤已存在的(自重);
      

  5.   

    主键冲突了。
    分多次INSERT,在INSERT语句最后多几次WHERE筛选,一次次的筛选找出出问题的数据。