SQL将表数组规范化为多个新表

时间:2015-04-19 16:05:03

标签: sql-server database-normalization

我有一个包含51个表的数据库,它们都具有相同的模式(每个状态一个表)。每个表有几百万行和大约50列。

我已将列标准化为其他6个表,现在我想将这51个表中的所有数据导入到6个新表中。列名都是一样的,所以我希望我可以自动导入所有数据。

我假设我需要做的是:

  1. 选择具有原始架构的所有列表的名称

    SELECT TABLE_NAME 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_SCHEMA = 'raw'
    
  2. 迭代所有结果

  3. 从该表中抓取所有行,并将SELECT INTO相应的列添加到相应的表中
  4. 从原始表中删除行
  5. 我有什么遗失的吗?此外,有没有办法在SQL Server上运行,所以我不必一直打开我的SQL Server Management Studio?

1 个答案:

答案 0 :(得分:2)

是的,显然,你可以用t-sql自动化它。但我建议你在这种情况下使用SSIS。正如您所说,所有表的结构都与您进行某些ETL过程相同,然后您只需在源中更改表名。毋庸置疑,您将拥有以下优势:

  1. 点击几下解决问题
  2. 错误风险低
  3. 您将能够使用数据转换次数