簡體   English   中英

將多個 SQL Server 表合並為一個

[英]Merge multiple SQL Server tables into one

我在數據庫中有許多 SQL Server 表,這些表包含有關相同域(相同列)的信息,並且它們的名稱相同加上日期后綴( yyyyMMdd ):

  • TABLE_ABOUT_THIS_THING_20200131
  • TABLE_ABOUT_THIS_THING_20191231
  • TABLE_ABOUT_THIS_THING_20191130
  • TABLE_ABOUT_THIS_THING_20191031
  • TABLE_ABOUT_THIS_THING_20190930
  • TABLE_ABOUT_THIS_THING_20190831
  • ...

如果它們都在同一個表中,這似乎更有意義。 有沒有辦法,使用查詢/SSIS 或類似的東西,將這些表合並為一個(TABLE_ABOUT_THIS_THING),其中包含一個由當前表后綴構成的新列( extraction_date )?

您可以將 SSIS 與新表“TABLE_ABOUT_THIS_THING”一起用作目標,並將如下所示的查詢作為源:

`Select * FROM table1
UNION
Select * FROM table2 
UNION
.
.
.`

使用 SSIS:使用 union 從多表中收集數據,並在目標之前使用派生列作為提取日期,您可以從以下鏈接獲取更多信息: https : //www.tutorialgateway.org/union-all-transformation-in -ssis/

您可以使用UNION ALL

create view v_about_this_thing as
    select convert(date, '20200131') as extraction_date t.*
    from TABLE_ABOUT_THIS_THING_20200131
    union all
    select convert(date, '20201912') as extraction_date t.*
    from TABLE_ABOUT_THIS_THING_20191231
    union all
    . . . 

這恰好是一個分區視圖,它還有其他一些好處。

挑戰在於如何保持最新狀態。 我的建議是修復您的數據處理,以便將所有數據放入一個表中。 您還可以設置一個每月運行一次的作業並將最新值插入到現有表中。

另一種方法是每月或定期重建視圖。 您可以使用 DDL 觸發器執行此操作,該觸發器在新表出現時重新創建視圖。

另一種選擇是一次性創建一年的所有表——但為空——並每年手動創建一次視圖。 但是在你的日歷上有一個筆記來提醒你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM