我现在从SQLServer中读取数据,约6000多条记录,保存在DataTable里,然后逐条插入到Oracle中,但是老是不能完全插入(count=4888,err1=1;err2=0),请问什么原因,在线急等。        int count = 0;
        int err1 = 0;
        int err2 = 0;
        using (OracleConnection myConn = new System.Data.OracleClient.OracleConnection(OraConnectString))
        {
            //myConn.ConnectionString = "Data Source=myoracle;user id=sde;pwd=sde;persist security info=yes";            //step1:插入记录
            OracleCommand cmd = null;
            DataTable dt = getRecords(strTime);
            if (dt.Rows.Count != 0)
            {
                foreach (DataRow row in dt.Rows)
                {
                    try
                    {
                        if (myConn.State != ConnectionState.Open)
                            myConn.Open();
                        cmd = myConn.CreateCommand();
                        string strSQL = GetSQL(row);                        cmd.CommandText = strSQL;
                        cmd.ExecuteNonQuery();
                        count++;
                    }
                    catch (Exception exp)
                    {
                        if (exp.Message.Contains("ORA-00001"))
                        {
                            err1++;
                            continue;
                        }
                        else
                        {
                            err2++;
                            break;
                        }
                    }
                }
            }
        }

解决方案 »

  1.   

    字段为not null  插入的时候为null了吧
      

  2.   

    to 2楼:
    两边表结果不一致,不过我在生成SQL语句时改成Oracle的表的结构了,并且忽略了主键重复插入错误。结果成功插入了4000多条,不知道为什么不能完全插入,而且就发现一条主键重复插入错误(err1 =1 )。
      

  3.   

    做个DBLINK然后直接create table a as select * from SQLServer表 就好了。
      

  4.   

    我发现问题了:
    插入SQL语句中的某个字段值有单引号和双引号,造成“System.Data.OracleClient.OracleException: ORA-00972: 标识过长”错误。
    SQL语句:
    insert into ajjml_zb values('普查区位于莱芜市城区西北约25km,属城区羊里镇管辖。地理坐标东经117°31'00"~117°33'45",北纬36°20'00"~36°21'30"面积11.55km2。1/1万地质测量、1/1万地质物探综合平面图编图、1/2千高精度磁测剖面与原有资料1/2千垂直磁力异常平面图分析对比,以及钻探和各项测试工作的实施,充分收集利用了以往的地质、物探资料,综合分析、综合研究,对区内羊里磁异常、泉子沟南磁异常以及孟家洼M3、M4~M7五个小异常进行了分析解释,作出了评价;对曾民采过的玉石、温石矿点进行了调查、描述和评价。提交D级铁矿石储量(推断的内蕴经济资源量(333))37.3385万吨;E级铁矿石储量(预测的资源量(334))63.9843万吨,D+E级铁矿石储量101.3228万吨,伴生组份。钴金属量183.32吨。','铁矿、孟家洼、普查','金属矿、黑色金属矿、铁矿','矿产勘查','','否')
    这样的话怎么处理?