Sql 如何在不复制主键的情况下导出/生成数据?
我遇到了以下问题:我有两个数据库,比如说Sql 如何在不复制主键的情况下导出/生成数据?,sql,sql-server,Sql,Sql Server,我遇到了以下问题:我有两个数据库,比如说DB1和DB2 我正在使用SQLServer2008R2 在DB1中,我有: ID Value 1 Jef 2 Kendra tblPerson ID Value 1 Jake 2 Sandra 在DB2中,我有: ID Value 1 Jef 2 Kendra 我想导出或生成脚本或使用工具成为下一个 在DB1中: ID Value 1 Jak
DB1
和DB2
我正在使用SQLServer2008R2 在
DB1
中,我有:
ID Value
1 Jef
2 Kendra
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
我试过:
- 导出(在插入属性标识的情况下)
- 在关闭“生成主键”的情况下生成脚本
-E
选项或者,只需这样做:
insert into DB1..tblPerson
select Value from DB2..tblPerson
不幸的是,您没有说明您使用的是哪个版本的SQL Server—如果您使用的是SQL Server2005或更新的版本,您可以使用以下内容:
;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
这将为您提供如下输出:
;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
将新表的id设置为自动标识后,您应该能够执行以下操作:
insert into db1.NewTable ( Value ) select Value from db1.Table
insert into db1.NewTable ( Value ) select Value from db2.Table
桑德拉怎么了?没注意到复制粘贴错误(泰;)我遇到的问题是,我在不同的产品中得到了2个相等的分贝。所以他们认为数据不相等。现在我想要一个数据库的数据来补充另一个数据库的数据。但我有依赖关系等等。。。因此,我必须搜索一个迁移工具,或者像我的问题中那样手工进行迁移,通过这些例子,我会发现问题是我在不同的产品中得到了2个相等的DB。所以他们认为数据不相等。现在我想要一个数据库的数据来补充另一个数据库的数据。但我有依赖关系等等。。。所以我必须搜索一个迁移工具,或者像我的问题中那样手工完成,通过这些例子tough@daageu:如果您可以将其中一个数据库中的数据导出/导入到第二个数据库所在的同一服务器上,则可以使用上面概述的方法。这有可能吗??