我遇到了问题。
我正在尝试创建一种简单的方法来复制Table1
到Table2
。现在我知道Select Into
,但是在这里有表1到表100,我试图创建所有这些的副本。 SSIS或SQL没问题。
副本的原因是我在类数据库中有2个表。 Alegra 101和102,我试图创建代数103这将适用于所有的表,如Health 101和102,假设有大约100个不同的类,101级和102级需要103.
答案 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过程。除了许多其他好处,聚合也变得更加简单。