繁体   English   中英

将列数据从一个数据库传输到另一个数据库

[英]Transfer column data from one database to another

我正在尝试将整个列中的数据从备份数据库转移到当前生产数据库中(当天早些时候,我在生产中损坏了该列并进行了错误的更新)。 我正在使用MS SQL Server 2005。

在此示例中,我试图将“ Column1”从DB2.Table1还原到DB1.Table1:

begin transaction

update [DB1].[dbo].[Table1]
set [DB1].[dbo].[Table1].[Column1] = [DB2].[dbo].[Table1].[Column1]
from [DB1].[dbo].[Table1] db1Alias, [DB2].[dbo].[Table1] db2Alias
where db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId

commit transaction

对我来说,此查询返回:

不能绑定多部分标识符“ DB2.dbo.Table1.Column1”。

任何帮助,将不胜感激。

谢谢!

编辑:

多亏了SQL Menace,我使此查询得以运行。 谢谢! 参见下面的固定查询

begin transaction

update db1Alias
set db1Alias.[Column1] = db2Alias.[Column1]
from [DB1].[dbo].[Table1] db1Alias, [DB2].[dbo].[Table1] db2Alias
where db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId

commit transaction

问题是我没有在更新和设置语句中使用自己声明的别名。 在声明它们之前,我不知道您应该使用别名”。

假设column1是该列的真实名称,那么问题可能是您在select中使用了别名,但没有在更新中使用

这是它的外观...我还使用了一种新样式的JOIN

update db1Alias
set db1Alias.[Column1] = db2Alias.[Column1]
from [DB1].[dbo].[Table1] db1Alias
JOIN  [DB2].[dbo].[Table1] db2Alias ON db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId

这是您可以运行的示例

首先运行它来创建这两个表

use tempdb
go

create table BlaTest(id int)
insert BlaTest values(1)
go

create table BlaTest2(id int)
insert BlaTest2 values(1)
go

现在,当您尝试执行此操作时

update tempdb.dbo.BlaTest
set tempdb.dbo.BlaTest.id =tempdb.dbo.BlaTest2.id
from tempdb.dbo.BlaTest b
join tempdb.dbo.BlaTest2 a on b.id =a.id

消息4104,第16级,状态1,第2行
不能绑定多部分标识符“ tempdb.dbo.BlaTest2.id”。

但是如果使用别名...没问题

update b
set b.id =a.id
from tempdb.dbo.BlaTest b
join tempdb.dbo.BlaTest2 a on b.id =a.id

也许您应该创建该列?

输入以下内容:

select * from information_schema.columns
where table_name = 'Table1'

您看到名为column1的列吗?

update [DB1].[dbo].[Table1]
set [DB1].[dbo].[Table1].[Column1] = db2Alias.[Column1]
from [DB1].[dbo].[Table1] db1Alias, [DB2].[dbo].[Table1] db2Alias
where db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId

更好的是

update [DB1].[dbo].[Table1]
set [DB1].[dbo].[Table1].[Column1] = db2Alias.[Column1]
from [DB1].[dbo].[Table1] db1Alias INNER JOIN [DB2].[dbo].[Table1] db2Alias
ON db1Alias.TeamId = db2Alias.TeamId 
and db1Alias.IndividualId = db2Alias.IndividualId

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM