运行 table 名称来自 sys.tables SQL Server 2008R2

Run table names pulled from sys.tables SQL Server 2008R2

我需要识别今天由界面创建的 tables,我可以使用以下查询来完成:

注意:界面每天更改 table 个名称。

SELECT [name] AS [TableName]
FROM sys.tables
WHERE NAME LIKE '_XYZExport_%'
    AND CAST(create_date AS DATE) = CAST(GETDATE() AS DATE)
ORDER BY NAME

我需要的: 一旦提取了 table 个名称,我需要将其数据转储到一个新的 table 中。这怎么能轻松做到?

Example:

我的查询返回了以下 tables:

  1. _XYZExport_B02
  2. _XYZExport_B12
  3. _XYZExport_B22

我想获取这些返回的 table 并使用 Union All 将它们的数据插入现有存档 table。

任何帮助都会很棒!

您的 "cursor" 标签走在正确的轨道上。我建议创建一个插入语句并在每个游标循环中执行它。

DECLARE @TableName sysname
DECLARE @SQLInsert VARCHAR(100)

DECLARE TableNamesCursor CURSOR FAST_FORWARD READ_ONLY FOR 

SELECT [name] AS [TableName]
FROM sys.tables
WHERE NAME LIKE '_XYZExport_%'
    AND CAST(create_date AS DATE) = CAST(GETDATE() AS DATE)
ORDER BY NAME

OPEN TableNamesCursor

FETCH NEXT FROM TableNamesCursor INTO @TableName

WHILE @@FETCH_STATUS = 0
BEGIN

    SET @SQLInsert = 'INSERT INTO ArchiveTable SELECT * FROM ' + @TableName
    EXEC sp_executesql @SQLInsert

    FETCH NEXT FROM TableNamesCursor INTO @TableName
END

CLOSE TableNamesCursor
DEALLOCATE TableNamesCursor

希望能助你一臂之力。

诺埃尔