如题

解决方案 »

  1.   

    异构数据库之间导数据参见 碧血剑 的
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
      

  2.   

    这样一定可以:
    ADOQ.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files;Initial Catalog=c:\';
    with ADOQ do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * into 12.dbf from tablename IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=sql123;DataBase=oiw;]');
      ExecSQL;
      Close;
    end;
      

  3.   

    TO:  proudprince(陌生人) 
    非常感谢你的解答,导出数据已经解决了,但是导入数据的时候出现问题,请麻烦解答,谢谢,马上就给你分了,不解答也给你得分的,只望你帮忙。谢谢了
    SELECT * into 
    SQL_TableName 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\";User ID=Admin;Password=;Extended properties=dBase 5.0')...DBF_TableName服务器: 消息 7314,级别 16,状态 1,行 1
    OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 不包含表 'DBF_TableName'。该表可能不存在,或当前用户没有使用该表的权限。
      

  4.   

    是不是要同一台机器上?如果不是改怎么办?
    我现在得数据库在服务器上,而那个文件也在数据库上,远程执行(在客户端使用工具:查询分析器执行出现了
    OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。 
    [OLE/DB provider returned message: Microsoft Jet 数据库引擎找不到对象'DerateMoney'。请确定对象是否存在,并正确地写出它的名称和路径。]
    ,请问为什么,谢谢
      

  5.   

    抱歉现在才来这个语句是要求DBF文件在SQL服务器上的。
    SELECT * into 
    SQL_TableName 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\";User ID=Admin;Password=;Extended properties=dBase 5.0')...DBF_TableName
    如果不在服务器上,大概只能用BATCHMOVE来做了,很快的。
    但其实如果只用一个SQL语句,不管是导入还是导出,效果都不太好,字段类型会转换的不一致,比如整数型会可能变成FLOAT,还有就是如果导出到DBF,如果用户表有两个字段的前8位字符一样,用这样的语句导出就会报错。
    所以我导入导出现在都用BATCHMOVE了。
    拙见,仅供参考。