如何将相同的表组合成一个表?

时间:2013-07-11 18:33:40

标签: sql sql-server database sql-server-2008

我在同一个数据库中的12个表中分布了数百万个唯一行。它们都具有相同的架构/列。是否有一种相对简单的方法将所有单独的表组合成一个表?

我已经尝试将表导入到单个表中,但鉴于这是一个巨大的文件/行,SQL Server让我等了很长时间,好像我是从平面文件导入的。必须有一个更容易/更快的方式,不是吗?

2 个答案:

答案 0 :(得分:1)

您没有提供有关表结构的更多信息,但您可以从select中执行一个普通的旧插入,如下所示。该示例将采用Table2和Table3中尚不存在的所有记录,并将它们插入Table1中。您可以这样做将所有12个表中的所有内容合并到一个表中。

INSERT INTO Table1
SELECT * FROM Table2
WHERE SomeUniqueKey
NOT IN (SELECT SomeUniqueKey FROM Table1)
UNION
SELECT * FROM Table3
WHERE SomeUniqueKey
NOT IN (SELECT SomeUniqueKey FROM Table1)
--...

答案 1 :(得分:1)

做Jim说的话,但首先:

1)删除(或禁用)目标表中的所有索引。

2)从每个表中插入行,一次插入一个表。

3)在附加每个表后提交事务,否则在可能的回滚情况下将占用大量磁盘空间。

4)完成后重命名或重新创建索引。

如果存在重复密钥的可能性,您可能需要在密钥字段上保留索引并使用NOT EXISTS子句来阻止添加重复记录。