【发布时间】:2013-07-18 15:47:34
【问题描述】:
实际情况:我有一个重复的数据库,想知道哪些表中的数据没有从原始数据库中移动。然后我想从 Original 中填充 Duplicate 数据库表。
我通过编写以下脚本实现了部分解决方案(即查找空表):
SELECT
DBDupl.[dbo].sysobjects.Name, DBDupl.[dbo].sysindexes.Rows FROM
DBDupl.[dbo].sysobjects
INNER JOIN DBDupl.[dbo].sysindexes
ON DBDupl.[dbo].sysobjects.id = DCT_SOURCE_QA.[dbo].sysindexes.id WHERE
type = 'U'
AND DBDupl.[dbo].sysindexes.IndId < 2 and rows= '0'
EXCEPT
SELECT
DBOrig.[dbo].sysobjects.Name, DBOrig.[dbo].sysindexes.Rows FROM
DBOrig.[dbo].sysobjects
INNER JOIN DBOrig.[dbo].sysindexes
ON DBOrig.[dbo].sysobjects.id = DBOrig.[dbo].sysindexes.id WHERE
type = 'U'
AND DBOrig.[dbo].sysindexes.IndId < 2 and rows= '0'
现在我想在空表中填充数据。是否有一个查询来做这两个事情,即(1)。找出哪些表需要填充和(2)。将数据从 DBOrig 填充到 DBDupl。我已经用上面的脚本实现了(1),不想手动插入数据。
【问题讨论】:
-
我过去曾拼凑过一些东西,只是为我生成了一条 SQL
insert语句,我只需要运行它;需要注意的一件事是身份列 - 先删除身份属性,然后再恢复它。 -
@AdrianWragg,我已经创建了重复的数据库。所有属性集、标识列已处理并重新设置种子。但是我在数据传输时错过了一些列。现在我只想填充剩余的列。如果你能告诉我“黑客”是如何工作的……
-
只是检查一下,是从其他完整行中未传输的单个列还是几个表的全部内容?
-
表格的全部内容
-
在这种情况下,考虑到我知道表结构,我认为就像
SELECT 'insert into DBDupl.dbo.myTable values (', id, ',''' + name + ''')' from DBOrig.dbo.myTable一样简单。然后我将输出复制到另一个 SQL 窗口并运行它;这是一次性的工作(我怀疑你的工作可能是这样),所以代码质量和可重用性并不重要。
标签: sql sql-server sql-server-2008 tsql