SQL Server:将所有表复制到新表中

时间:2014-05-09 19:40:37

标签: sql sql-server ssis

我遇到了问题。

我正在尝试创建一种简单的方法来复制Table1Table2。现在我知道Select Into,但是在这里有表1到表100,我试图创建所有这些的副本。 SSIS或SQL没问题。

副本的原因是我在类数据库中有2个表。 Alegra 101和102,我试图创建代数103这将适用于所有的表,如Health 101和102,假设有大约100个不同的类,101级和102级需要103.

1 个答案:

答案 0 :(得分:0)

不是动态SQL的忠实粉丝,但你可能会逃避这样的事情。 也许您应该更深入地了解为什么您可能想要“复制”表格 - 其他人可能会为您提供更合适的解决方案。

DECLARE @CMD NVARCHAR(4000) = ''

SELECT @CMD = @CMD + 'SELECT * INTO [dbo].[Copy_' + TABLE_NAME + ']' + ' FROM ' + TABLE_SCHEMA + '.' + TABLE_NAME + ';' + CHAR(13)
FROM INFORMATION_SCHEMA.TABLES AS t
--  Add your filtering criteria as a WHERE clause

PRINT @CMD  --  to check the code generated

-- EXEC SP_EXECUTESQL @CMD ***UNCOMMENT WHEN READY***

鉴于您添加了需求的原因,我会认真重新考虑我的模型。而不是有n个表(每个主题\类1个) - 更合适的模型是将所有同类数据保存在同一个表中。

CREATE TABLE Class
(
    ClassID     INT,
    YearOfClass INT,
    ...
    ...
    ClassSubject    VARCHAR(50) -- This could be an FK to a ClassSubject Table
)

其中ClassSubject填充了值'Algebra 101','Algebra 102'等...... 这将使您不必每次添加新主题时都必须创建表 - 并且必须相应地调整所有stroed过程。除了许多其他好处,聚合也变得更加简单。