我有两个不同得数据库这两个表结构相似
例如数据库A中有个表a,数据库B中有个表b现在我要把a表数据查询出来插入b表中用sql语句怎么写
如果用delphi但是不能用dbgrid来显示查询再插入
我只需要一个按钮两个adoconnection和ADOQUERY来实现.该怎么来实现呢.

解决方案 »

  1.   

    var
      vSQL: string;
    begin
      vSQL := 'Select * Into 数据库b.dbo.new_table_name from 数据库A.dbo.old_table_name';
      with adoquery1 do
      begin
        close;
        sql.clear;
        sql.text := vSQL;
        ExecSQL;
      end;
    end;
    前提是数据库在同一机器,如果不再同一机器略有不同。
      

  2.   

    sqlstr := 'select field1,field2,field3 ... from a'
    query1.sql.text := sqlstr;
    query1.open;sqlstr := 'select field1,field2,field3 ... from b'
    query2.sql.text := sqlstr;
    query2.open;用for 循环来实现
    for i:=0 to  query2.recordcount-1 do
    begin
      query1.append;
      for j:=0 to query2.fieldcount-1 do
       query1.fields[i].value := query2.fields[i].value  query1.post;
    end;
      

  3.   

    不在同一个机器用OPENDATASOURCE
      

  4.   

    用2个adoconnection。那你不是可以连接2个数据库了吗?
      

  5.   

    select * into 同时会创建新表,2楼的方法会是数据表重复跳错,建议还是用循环吧
      

  6.   

    var
      vSQL: string;
    begin
      vSQL := 'Select * Into 数据库b.dbo.new_table_name from OPENDATASOURCE(
             ''SQLOLEDB'',
             ''Data Source=机器名或IP地址;User ID=sa;Password=''
             ).数据库a.dbo.old_table_name';
      with adoquery1 do
      begin
        close;
        sql.clear;
        sql.text := vSQL;
        ExecSQL;
      end;
    end;不同服务器调用