现在要把原先在ACCESS中的数据库迁移到ORACLE中,数据库指标体系完全不同。最初用ADO方式,一面连ACCESS,一面连ORACLE方式进行数据迁移,发现这样操作速度十分慢,每秒不到10条记录。而原先数据就有几十万条,程序效率不高。
请问有什么方法,用程序方式快速的迁移到ORACLE中?
谢谢。

解决方案 »

  1.   

    ORACLE应该有自己的导入导出功能吧....
      

  2.   

    如果不是要求动态导入.我一般的作法是先写一程序,将access导成SQL角本(insert into ...格式),然后用sqlplus执行角文
      

  3.   

    因为现在两个数据库结构都不一样了,数据要进行转换,必须得用程序方式实现,用INSERT方式效率不高可不可能用INSERT INTO TABLE SELECT * FROM 。这种方式实现。
      

  4.   

    不同数据库间不能用INSERT INTO TABLE SELECT * FROM ...
    数据要转换,也可以生成SQL角本的,在sqlplus中执行insert角本要比程序中快
      

  5.   

    以下是我的一个例子
    procedure TForm1.Button1Click(Sender: TObject);
    var
      id:string;
      username:string;
      data:TStringList;
    begin
      data:=TStringList.Create;
      with ADOQuery1 do
      begin
         SQL.Text:='select * from   users';
         Open;
         while not eof do
         begin
            id:=FieldByName('id').AsString;
            username:=FieldByName('username').AsString;
            //这里可对id,username作数据转换处理
            data.Add(Format('insert into o_users(o_id,o_username) values(''%s'',''%s'');',[id,username]));
            next;
         end;
         Close;
      end;
      data.Add('commit;'); //如果数据量大,可分段提交 
      data.SaveToFile('d:\users.sql');
      data.Free;
    end;
    最后,用oracle的sqlplus执行d:\users.sql角本就可以了