一张表的数据量比较大,每天要插入三百万条以上的记录。
是用代码将文件中的数据导入库的
表结构如下:create table ocs_retpin_lt
(
    CountDate        varchar2(8)  not null,
    MSISDN           varchar2(32) not null,
    PINTotalErrTms   NUMBER(10,0)
);
create index ix_retpin_lt on ocs_retpin_lt(CountDate,MSISDN);由于数据量很大,不知道是否有重复记录,所以就删掉主键改为索引了。
结果昨天反反复复将一个文件反复入库,这个文件中有160多万条数据,
每次却只能入657587条记录。将第657587条附近的几条记录拿出来查找,却没有在文件当中找到重复的记录。请教各位大侠:
这是为何???
请知无不言言无不尽。
现在毫无头绪。想先从数据库中入手解决该问题,如果这边没问题,那就再去入库代码中找问题了。

解决方案 »

  1.   

    是用PROC写的,日志打的比较土,将就看一下吧。
    execute fetch_fileinfo failed, SQLCODE = 1403, ISAM_CODE = 0, loadtblname = ocs_retpin_lt and loadflag = I and loaddate = 
    Execute sql success, SQL: COMMIT WORK.
    Enter Cmultiloadtblinfo::fetch()
    Cmultiloadtblinfo::fetch: execute fetch_tblinfo(select trim(tblname), createtimes  from multiloadtblinfo  where dealflag = '1'  and pid = 0  and (lastdealtime + numtodsinterval(120, 'second') )  <  sysdate  and rownum = 1) failed, SQLCODE = 1403, ISAM_CODE = 0
    Execute sql success, SQL: ROLLBACK WORK.
      

  2.   

    还有 我觉得 你可以 
    create table ocs_retpin_lt_bak
    (
      CountDate varchar2(8)  null,
      MSISDN varchar2(32) null,
      PINTotalErrTms varchar2(500) 
    );
    这样 先把该文件的数据都导到cs_retpin_lt_bak 这张表里面,看看数据量是否是160多万条数据然后 在查找 有多少条CountDate 为空的,还有多少MSISDN 为空的, 还有PINTotalErrTms 数据类型不是数值型的。