2015-04-19 85 views
0

我有一個數據庫,其中有51個表格都具有相同的模式(每個州有一個表格)。每張桌子有幾百萬行和大約50列。SQL將表格數組規範化爲多個新表格

我已經將列標準化爲6個其他表,現在我想將這51個表中的所有數據導入到6個新表中。列名都是一樣的,所以我希望我可以自動導入所有數據。

我假設是什麼,我需要做的是:

  1. 選擇所有具有原始模式

    SELECT TABLE_NAME 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_SCHEMA = 'raw' 
    
  2. 遍歷所有的結果

    列表的名稱
  3. 從該表中獲取所有行,並將SELECT INTO合適的列轉換爲相應的表格
  4. 從原始表中刪除行

有什麼我失蹤了嗎?另外,有什麼辦法可以在SQL Server上運行,所以我不必一直打開我的SQL Server Management Studio?

+0

一旦你的腳本,您可以始終使用['SQLCMD'命令行實用程序](https://msdn.microsoft.com/zh-cn/library/ms162773.aspx) –

回答

2

是的,很明顯,你可以用t-sql自動化它。但我建議你在這種情況下使用SSIS。正如你所說,所有表的結構都是相同的,你可以做一些ETL過程,然後你只是改變源表中的表名。 Consecuently,你將有folowwing優點:

  1. 解決問題與點幾下
  2. 低錯誤的風險
  3. 您將能夠使用數據轉換的數量