目标表A 源表B
表A与表B的表结构差不多,表A只比表B多一个字段a1(它为表A的主键),请问如何用一条语句把表B的数据全部导入到表A中。并且表A与表B不是一个数据库?

解决方案 »

  1.   

    是在SQL上面吗?如果是,直接用导入向导就可以了,而且你要把表B对应表A的位置也多做一个字段,数据导过来之后再把它删掉.如果是用语句,那不是很方便,如果也做多一个字段就可以了,数据库不同没关系,新建一个连接,将它先导出到一个文件,TXT就可以,然后从里面读出来插入到表A中
      

  2.   

    是在VB里,我的意思也不是你说的。
    现在的情况是:
    假如:表A的结构与表B的结构一样。就可以用select ...into...命令。
      

  3.   

    对, insert into 表A SELECT 表B
      

  4.   

    insert into db1..A(field2,field3....除主键外的所有字段) select * from db2..B
      

  5.   

    insert into [数据库名].[dbo].[B表名] select 字段名 from [数据库名].[dbo].[A表名]
      

  6.   

    insert into [数据库名]..[A表名] select *,'' from [数据库名]..[B表名]其中的 *,'' 表示B表的所有字段的后面再加一个空字符的字段
    ''根据字段类型赋值,如为整型,将''改为0即可。
      

  7.   

    不是同一个数据库也可以呀,在表名前加前缀
    数据库名.所有者.表名(如:db1..table1)
    你到底试了没有?
      

  8.   

    不是同一个数据源,就用openrowset来打开B库就行了.
    insert into A库..表名
    select * from openrowset(....)
      

  9.   

    楼主要给出两个数据库都是什么数据库才行啊.
    下面的例子是在SQL中查询DBF的数据库
    --/* dBase III文件
    select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'dBase III;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料3.dbf]')
    --*/
      

  10.   

    就用大伙说的“insert into...”吧
      

  11.   

    表A是ACCESS数据库的,表B是SQL数据库的。我现在用的是一条一条导入,几千条的时候速度还是可以的。不知道。再多会怎么样。
      

  12.   

    /*************导入Access********************/
    insert into openrowset('Microsoft.Jet.OLEDB.4.0', 
       'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表
      

  13.   

    Dim Conn As New ADODB.Connection
    Dim strSql as String
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=库A.mdb;"
    strSql = "INSERT INTO 表B (Field1,Field2,Field3,……) IN '库B.MDB' SELECT Field1,Field2,Field3,…… FROM 表A WHERE ……"
    Conn.Execute (strSql1)你自己试试,不同的数据库之间也可以使用,将数据库名改了就可以了