如何在不复制主键的情况下导出/生成数据?

时间:2012-02-23 11:27:14

标签: sql sql-server

我遇到了以下问题:我有2个数据库,比方说DB1DB2
我正在使用SQL Server 2008R2

DB1我有:

tblPerson

   ID Value
   1  Jake
   2  Sandra

DB2我有:

   ID   Value
   1    Jef
   2    Kendra

我想导出或生成脚本或使用工具成为下一个。

DB1

   ID  Value
   1   Jake
   2   Sandra
   3   Jef
   4   Kendra

但我总是得到这个结果:

   ID   Value
   1    Jake
   2    Sandra
   1    Jef
   2    Kendra

我试过了:

  • 导出(插入属性标识)
  • 生成脚本并生成主键

这些工作都没有这方面的工具,或者它是不可能的,我是否必须手工完成所有工作?

3 个答案:

答案 0 :(得分:1)

  1. BCP OUT表格的值
  2. BCP IN但不使用-E选项
  3. 如果密钥为identity,则会自动生成密钥


    或者,只需执行此操作:

    insert into DB1..tblPerson
    select Value from DB2..tblPerson
    

答案 1 :(得分:1)

遗憾的是,你不会说你正在使用哪个版本的SQL Server - 如果你使用的是SQL Server 2005或更新,你可以使用这样的东西:

;WITH CombinedData AS
(
    SELECT DBNr = 1, ID, Value
    FROM DB1.dbo.tblPerson

    UNION ALL

    SELECT DBNr = 2, ID, Value
    FROM DB2.dbo.tblPerson
)
SELECT
    ROW_NUMBER() OVER (ORDER BY DBNr, ID) AS 'NewID',
    Value
FROM 
    CombinedData

这会给你一个像这样的输出:

NewID  PersonName
  1     Jake
  2     Sandra
  3     Jef
  4     Kendra

答案 2 :(得分:1)

将新表的ID设置为自动标识,您应该能够执行以下操作:

insert into db1.NewTable ( Value ) select Value from db1.Table
insert into db1.NewTable ( Value ) select Value from db2.Table