背景關系:我有一個 ETL 流程設定來使用 Python 腳本填充資料倉庫中的表。該腳本通過 sqlalchemy 執行 truncate 陳述句以清空每個表,然后使用 pandas.to_sql方法從資料框中加載新的源資料。見下面的片段:
engine.execute(sa_text(f'''TRUNCATE TABLE {schema}.{table}''').execution_options(autocommit=True))
df.to_sql(table, con=engine, schema=schema, if_exists='append', index=False, chunksize=chunksize,
method=method)
問題:奇怪的是,每個表的SQL Server sys.tables modify_date列沒有捕獲反映最新 modify_date 的表更改。有人可以向我解釋為什么會這樣以及如何修改我的 Python 代碼和/或 SQL Server 設定以準確捕獲sys.tables 中的更改嗎?
uj5u.com熱心網友回復:
modify_date不捕獲TRUNCATE(或對資料的任何更改)。從檔案sys.objects(這是sys.tables獲取其列的地方):
上次使用 ALTER 陳述句修改物件的日期。如果物件是表或視圖,則 modify_date 在創建或更改表或視圖上的索引時也會更改。
SQL Server 默認情況下不跟蹤資料修改,而且您似乎只跟蹤這些截斷操作,在這種情況下,我建議您的應用程式在每個操作成功(或失敗,我想)時寫入一個日志表.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409860.html
標籤:
下一篇:列中的混合日期
