如何解决几十万条记录数据转换的速度问题。从foxpro的dbf到ms sql数据库的数据转换,数据量非常大,有几十万条。目前我的方法是
  while not eof {
   先从源库读一条,再写入ms sql一条;
     }必须用vb实现,ADO控件。大概要6-8个小时才能完成,请问如何解决速度问题??采用什么方法??最快大概需要多长时间。我的email:[email protected],分不是问题

解决方案 »

  1.   

    用sql server 自带的数据导入导出功能手工实现
    或者
    自己用它的控件自己做个导出导入工具即可
    不是必须用ADO处理,
    那样会很快的
      

  2.   

    dts是什么阿?
    sql server 自带的数据导入导出工具啊!
      

  3.   

    你在Foxpro 中的数据有没有什么规律?
      

  4.   

    odb.ConnectionString = GetConnectionStr("")
        odb.BeginTrans
           szSql = "SELECT DISTINCT tvi.owner_id, tci.transport_company_short_name, tvi.transport_company_id,tvi.split_company_id " _
              & " FROM dbo.transport_vehicle_info tvi INNER JOIN dbo.transport_company_info tci ON tvi.transport_company_id = tci.transport_company_id" '车主
         
         Set rstemp = odb.Execute(szSql)
         szSql = ""
         
         i = 1
         
         rstemp.MoveFirst
         Do While Not rstemp.EOF
           szSql = "INSERT INTO owner_info(owner_id, owner_name, address, id_card, transport_company_id, split_company_id, contact, account_id,delete_state,annotation) " _
                & "VALUES ('" & Trim(rstemp!owner_id) & "','" & Trim(rstemp!transport_company_short_name) & "',' ',' ','" & Trim(rstemp!transport_company_id) & "','" & Trim(rstemp!split_company_id) & "',' ',' ',0,' ')"
        
        odb.Execute szSql, , , 0
             i = i + 1
             rstemp.MoveNext
         Loop
           odb.CommitTrans
        
         Set odb = Nothing
         Set rstemp = Nothing也有几万条 只需30-60秒 不要6-8个小时才能完成吧
      

  5.   

    先从源库读一条,再写入ms sql一条?为什么不从源库读所有的呢?我估计你慢就是在这个地方
    (我不懂,瞎说的)
      

  6.   

    to cbr7619(cbr7619) 是啊,就是慢再这个地方,但是我不知道有没有什么解决方法啊:)
    谢谢: cbr7619(cbr7619
      

  7.   

    如果你只需进行一次转换,可以用SQL server 企业管理器的数据导入向导 or 在数据转换服务中完成
    入你需在编程中实现,那就得用DTS(数据转换服务),具体内容可以去SQL server 的联机丛书中查阅(关键字DTS),那里有详细讲解和VB事例。
    另外,程序中的DTS包,你可以利用数据导入向导\保存、调度、复制包步骤,另存为VB文件,以后在程序中直接使用
      

  8.   

    创建SQL Server的连接数据库,写存储过程导数据或直接读连接数据库的数据。
      

  9.   

    to  arlgil(arlgil)  :
        为何不把原代码拿来看看?
      

  10.   

    利用数据导入向导\保存、调度、复制包步骤,另存为VB文件后,会生成一VB模块文件.bas,
    然后
    1.把该文件加入你的工程
    2.把该文件的Sub Main()更名为你的过程名
    3.找出对DBF文件应用的地方,换成一参数带入
    4.在需数据转换的地方调用该过程
    即可另外记住:在你的工程中要引用
    C:\Program Files\Microsoft SQL Server\80\Tools\Binn\dtspkg.dll
        Microsoft DTSPackage Object Library
      

  11.   

    你在编程之前可以先用SQL Server的数据导入/导出功能将数据先导进去。
    然后再编程对数据库的数据进行操作。
      

  12.   

    谢谢大家,我利用周末好好研究一下,再把结果汇报给大家,然后就结分了:)。我的qq:21114341,希望chenyu5188,zhp80(zhp80),cbr7619(cbr7619) 可以加我,谢谢