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

SQL Normalizing array of tables into multiple new tables

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

我已将这些列规范化为其他 6 个 table,现在我想将这 51 个 table 中的所有数据导入到 6 个新的 table 中.列名都是一样的,所以我希望我可以自动化导入所有数据的过程。

我假设我需要做的是:

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

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

  3. 从 table 中获取所有行,并将 SELECT INTO 适当的列放入适当的 tables
  4. 从原始数据中删除行 table

有什么我遗漏的吗?另外,有什么方法可以在 SQL 服务器上安装这个 运行,这样我就不必一直打开我的 SQL Server Management Studio 了吗?

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

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