有两个库:A、B。我想要A库的一个或几个表导入B库中(导入B库,不是导入B库中的一个表),顺便附加点条件where。用SQL语句怎么写?

解决方案 »

  1.   

    如果A,B两库不同机,要注册一个到另一个的连接.
    假设各表字段相同,如不同,则选取相同的.字段相同
    insert into tableA select * from servernameB.dbB.dboB.talbeB where ...字段不相同
    insert into tableA(col1,col2...) select col1,col2... from servernameB.dbB.dboB.talbeB where ...
      

  2.   

    如过要加上某些特殊字段.
    如:日期为当前日期.insert into tableA(col1,date1...) select col1,date1 = getdate(),...from servernameB.dbB.dboB.talbeB where ... 
      

  3.   

    --如果两个表结构完全相同,且没有自动编号、计算公式字段。--在同一个SQL Server实例中,两个数据库之间:
    insert database2.dbo.表名 
    select * 
    from database1.dbo.表名
    where...--如果两个表结构完全相同,但存在自动编号、或计算公式字段:--在同一个SQL Server实例中,两个数据库之间:
    insert database2.dbo.表名 (字段列表)
    select 字段列表
    from database1.dbo.表名
    where...--这里的字段列表应该排除自动编号字段和公式字段
      

  4.   

    数据库在同一台机时
    select * from a.dbo.a  a join b.dbo.a b on a.ID=b.ID在局域网或internet时--创建链接服务器
    exec sp_addlinkedserver  'ITSV','','SQLOLEDB','远程服务器名或ip地址'
    exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码'--查询示例
    select * from ITSV.数据库名.dbo.表名 as a join 表名 as b 
      

  5.   

    对不同的数据库的查询,也可用openrowset()
      

  6.   

    --多种方式:1、用OpenDataSource
    2、用OpenRowSet
    3、创建链接服务器,用OpenQuery()
      

  7.   

    我在查询分析器里执行:
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '192.168.0.11' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, 'sa', '88888888' --查询示例 
    select * from ITSV.HISDB.dbo.tmpordercost as a 得到的结果是:
    服务器: 消息 7403,级别 16,状态 1,行 5
    未能找到 OLE DB 提供程序 'SQLOLEDB ' 的注册表项。
    OLE DB 错误跟踪[Non-interface error:  Provider not registered.]。这是为何啊?