我要求将两个表数据与一个数据库进行比较,并将不常见的数据存储在同一数据库中名为关系数据的单独表中。
如何比较这些表数据?
比较是他们的任何工具,我们可以使用任何工具将不常见的数据存储在单独的表中吗? 我忘了告诉一件事,两个表具有相同的数据,但列名不同,这意味着例如第一个表有20列,2个表有50列,但是4列是匹配的数据,具有不同的行数和不同的列名每个table.based这些列数据匹配我需要找到行并存储到另一个表
答案 0 :(得分:3)
作为编写SQL脚本的替代方法,您可以将两个表中的整个结果复制到.csv文件中,然后使用win merge来比较这两个:
http://winmerge.org/downloads/
我在过去比较大量数据时已经使用过这种技术,而且效果非常好。
答案 1 :(得分:2)
这可以在t-sql中完成而不需要付出很多努力。但是在你的问题中,你要求一个工具来完成这个任务。如果你只是想购买一个工具来完成这项工作,那么在我的工作中,我们使用Redgate工具来部署从测试到生产的代码,我相信如果你有点创意,你可以让SQL Data Compare Tool做你要的是什么。
如果选择并比较这两个表,它将从一个表生成一个更改脚本。如果您只从一个中获取更改,请保存脚本,然后返回,单击箭头并从另一个方式仅从源中获取更改,您应该具有不常见的属性。
答案 2 :(得分:1)
尝试此查询,我认为其工作
insert into relational(r1,r2,r3,....rn) (select s1,s2,s3,...sn from information info where info.informationcity not in (select customercity from customer) and info.informationstate not in (select customerstate from customer) )
答案 3 :(得分: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
答案 4 :(得分:0)
您可以使用以下查询通过从多个表中检索数据来将数据插入目标表
insert into TargetTable(list_of_columns) (select list of columns from Table1 t1 join Table2 t2 on (t1.common_column != t2.common_column))
src列列表计数和目标列列表计数应该相等
答案 5 :(得分:-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