我有两个数据库A和B,这两个数据库的表和表结构全都一样,我想将B数据库中一部分表的数据导入数据库A中,其中主键标识列的数据也原封不动的导入进A中,如何写啊~~~谁知道帮我下~~(不用考虑B数据库和A数据库中主键冲突的问题,这两个数据库中的主键一定不重复)

解决方案 »

  1.   

    insert into Table1 select * from Table2
      

  2.   

    用一个中转吧,先将B的数据查出来放到一个dataset(或者用其他保存)中,
    再遍历出入到A数据库中
      

  3.   

    insert into 数据库A.dbo.Table1 select * from 数据库B.dbo.Table2
      

  4.   

    哪就把列写上吧不要写ID列就行了可能会麻烦一点insert into 数据库A.dbo.Table1 select A列,B列,C列 from 数据库B.dbo.Table2
      

  5.   

    ID很重要的说,插入的id
    号要和B表的ID号完全一致,不然就没意义了
      

  6.   

    哪你的逻辑有问题啊ID是自增的啊哪你A库和B库的坑定重复吧,难道你所说的主键就是指的这个ID?
    是不是这样
    A库的数据主键
    1
    2
    3
    B库的数据主键为10
    11
    12
    这样不重复?也就是说你要把B库的10,11,12也拿到A里形成1,2,3,10,11,12
      

  7.   

    其实B数据库是A数据库截出来的部分数据,
    比如说A数据库本来是
    1
    2
    3
    4
    5
    6
    然后我建了个B数据库

    2
    3
    4
    插到B中然后将A的
    2
    3
    4
    删掉
    然后再回调
    就是这个原理,是不会出现重复的
    现在思路已经有了,关键是如何将表示列去掉
    将标识列取消然后插入数据
    再回复标识列就好了,关键是如何取消和恢复标识列
      

  8.   

    这样的话有点麻烦要修改标识符如果这时间在有其它用户操作这样表可能就会出现标识符为空了set IDENTITY_INSERT  数据库A.dbo.Table1 off  
    insert into 数据库A.dbo.Table1 select A列,B列,C列 from 数据库B.dbo.Table2
    set IDENTITY_INSERT  数据库A.dbo.Table1 on
      

  9.   


    都不知道你是什么数据库,怎么帮你写啊
    oeacle还是sql server啊
      

  10.   

    一下代码经过测试,有效
    首先将test表中id 与test2 的数据删除
    然后将test 和test2 的结果一起插入一个新表test3
    删除test表,将test3表加规则,
    搞定收工
    delete from test where id in (select id from test2) 
    goselect * into test3 from 
    (
    select [id],[content] from test
    union
    select [id],[content] from test2
    ) as adrop table test/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
    BEGIN TRANSACTION
    SET QUOTED_IDENTIFIER ON
    SET ARITHABORT ON
    SET NUMERIC_ROUNDABORT OFF
    SET CONCAT_NULL_YIELDS_NULL ON
    SET ANSI_NULLS ON
    SET ANSI_PADDING ON
    SET ANSI_WARNINGS ON
    COMMIT
    BEGIN TRANSACTION
    GO
    CREATE TABLE dbo.Tmp_test3
    (
    id int NOT NULL IDENTITY (1, 1),
    [content] nvarchar(50) NULL
    )  ON [PRIMARY]
    GO
    SET IDENTITY_INSERT dbo.Tmp_test3 ON
    GO
    IF EXISTS(SELECT * FROM dbo.test3)
     EXEC('INSERT INTO dbo.Tmp_test3 (id, [content])
    SELECT id, [content] FROM dbo.test3 WITH (HOLDLOCK TABLOCKX)')
    GO
    SET IDENTITY_INSERT dbo.Tmp_test3 OFF
    GO
    DROP TABLE dbo.test3
    GO
    EXECUTE sp_rename N'dbo.Tmp_test3', N'test', 'OBJECT' 
    GO
    ALTER TABLE dbo.test ADD CONSTRAINT
    PK_test3 PRIMARY KEY CLUSTERED 
    (
    id
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]GO
    COMMIT
      

  11.   

    Use A
    Go
    insert Into A.TableA
    Select * From B.dbo.TableB