我有成千上万的独特行分布在同一个数据库的 12 个表中。它们都具有相同的架构/列。有没有一种相对简单的方法可以将所有单独的表格组合成一张表格?
我尝试将表导入单个表,但鉴于这是一个巨大的文件/行大小,SQL Server 让我等待很长时间,就好像我从平面文件导入一样。必须有一个更简单/更快的方法,不是吗?
我有成千上万的独特行分布在同一个数据库的 12 个表中。它们都具有相同的架构/列。有没有一种相对简单的方法可以将所有单独的表格组合成一张表格?
我尝试将表导入单个表,但鉴于这是一个巨大的文件/行大小,SQL Server 让我等待很长时间,就好像我从平面文件导入一样。必须有一个更简单/更快的方法,不是吗?
您没有提供有关您的表结构的太多信息,但您可能只需从一个选择中执行一个普通的旧插入,如下所示。该示例将获取所有不存在 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) 删除(或禁用)目标表中的所有索引。
2)从每个表中插入行,一次一个表。
3) 在每张表追加后提交事务,否则会在可能回滚的情况下占用大量磁盘空间。
4) 完成后重新启用或重新创建索引。
如果存在重复键的可能性,您可能需要在键字段上保留索引并使用 NOT EXISTS 子句来阻止添加重复记录。