2

我要求将两个表数据与一个数据库中的数据进行比较,并将不常见的数据存储在同一数据库中名为关系数据的单独表中。

如何比较这个表数据?

比较他们的任何工具,我们可以使用任何工具将不常见的数据存储在单独的表中吗?我忘了告诉一件事,两个表具有相同的数据但列名不同,这意味着例如第一个表有 20 列和 2 列和表有 50 列但其中 4 列是具有不同行数和不同列名的匹配数据每个表。基于这些列数据匹配我需要找到行并存储到另一个表中

4

6 回答 6

3

作为编写 SQL 脚本的替代方法,您可以将两个表中的整个结果复制到 .csv 文件,然后使用 win merge 比较两者:

http://winmerge.org/downloads/

我过去在比较大量数据时使用过这种技术,并且效果很好。

于 2013-07-23T09:26:11.567 回答
2

这可以在 t-sql 中轻松完成。但是,在您的问题中,您要求使用工具来完成此操作。如果您只是想购买一个工具来执行此操作,在我的工作中,我们使用 Redgate 工具将代码从测试部署到生产,我相信如果您有一点创意,您可以获得SQL 数据比较工具来做些什么你要求。

选择表格并查看差异

如果您选择并比较这两个表,它将生成一个从一个到另一个的更改脚本。如果您只从一个中获取更改,保存脚本,然后返回,单击箭头并仅从源中获取更改,那么您应该具有不常见的属性。

于 2013-07-23T11:30:22.167 回答
1

试试这个查询,我认为它的工作

插入关系(r1,r2,r3,....rn)
(选择 s1,s2,s3,...sn 从
  info.informationcity 不在的信息信息(从客户中选择客户城市)
   和 info.informationstate 不在(从客户中选择客户状态))
于 2013-07-25T06:50:50.020 回答
0

假设你们两个表有相同的结构
又快又脏?

;WITH cte AS (
SELECT 1 AS OriginTable, *
FROM OriginTable1
UNION SELECT 2 AS  OriginTable, *
FROM OriginTable2
)
SELECT {put here the list of all your columns}
INTO [YourDeltaTable]
FROM cte
GROUP BY {put here the list of all your columns} 
HAVING COUNT(*) = 1
于 2013-07-23T09:21:19.787 回答
0

您可以使用以下查询通过从多个表中检索数据来将数据插入目标表

插入 TargetTable(list_of_columns)
(从中选择列列表
  表1 t1 加入表2 t2
在 (t1.common_column != t2.common_column))

src 列列表计数和目标列列表计数应该相等

于 2013-07-23T12:07:41.010 回答
-1

这是一个假设您的表结构相同的简单示例

DECLARE @a table (
   val char(1)
);

DECLARE @b table (
   val char(1)
);

INSERT INTO @a (val)
  VALUES ('A'), ('B'), ('C');


INSERT INTO @b (val)
  VALUES ('B'), ('C'), ('D'), ('E');

DECLARE @mismatches table (
   val char(1)
);

INSERT INTO @mismatches (val)
SELECT val -- All those from @a
FROM   @a
EXCEPT     -- Where not in @b
SELECT val
FROM   @b;

INSERT INTO @mismatches (val)
SELECT val -- All those from @a
FROM   @b
EXCEPT     -- Where not in @b
SELECT val
FROM   @a;

SELECT *
FROM   @mismatches
于 2013-07-23T09:51:27.380 回答