在将一各有50000多条记录的DBF文件导入到ORACLE数据库时,CPU利用率达100%,导入的速度很慢;我的程序是这样的,给导入的每条记录生成一个内部号,再加到数据库中。程序的代码如下
//先打开ORACLE数据库的表BASIC
Set l_rst = New ADODB.Recordset
l_rst.CursorLocation = adUseClient
l_rst.Open "BASIC", l_cnn, adOpenDynamic, adLockOptimistic, adCmdTable//取内部号的数据集
Dim l_inno As ADODB.Recordset
Set l_inno = New ADODB.Recordset
Dim InnoStr As String
InnoStr="select inno.nextval from dual"//用ODBC打开DBF表
conn.Open "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=Driver={Microsoft FoxPro VFP Driver (*.dbf)};UID=;SourceDB=" & l_Dir  ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
Set ire = New ADODB.Recordset
     
ire.Open "Oldsys.dbf", conn, adOpenKeyset, adLockOptimistic, adCmdTable
        
If ire.RecordCount > 0 Then
            ire.moveFirst
            Do While Not ire.EOF
                l_inno.Open InnoStr, l_cnn
                '在每条记录前添加内部号
                ire.Fields("INNO") = l_inno.Fields(0)
                l_rst.AddNew
                With l_rst
                    .Fields("INNO").Value = Trim(l_inno.Fields(0))
                    .Fields("SQBH").Value = Trim(ire.Fields("SQBH"))
                    .Fields("SQMC").Value = Trim(ire.Fields("SQMC"))
                    .Fields("DWBH").Value = Trim(ire.Fields("DWBH"))
                    .Fields("DWMC").Value = Trim(ire.Fields("DWMC"))
                    .Fields("GRBH").Value = Trim(ire.Fields("GRBH"))
                    .Fields("GRMC").Value = Trim(ire.Fields("GRMC"))
                    .Fields("GRXB").Value = Trim(ire.Fields("GRXB"))
                    .Fields("CSNY").Value = Trim(ire.Fields("CSNY"))
                    .Fields("GZNY").Value = Trim(ire.Fields("GZNY"))
                    .Fields("LTNY").Value = Trim(ire.Fields("LTNY"))
                    .Fields("YFDY").Value = Trim(ire.Fields("YFDY"))
                    .Fields("LTLB").Value = Trim(ire.Fields("LTLB"))
                    .Fields("LTZT").Value = Trim(ire.Fields("LTZT"))
                End With
                ire.Update
                Label1.Caption = "已完成" & i & "/" & ire.RecordCount & ""
                l_rst.Update
                l_inno.Close
                ire.MoveNext
            Loop