我有一個奇怪的問題在這裏,我試圖加載一些數據到SQL Server中的新表。該表自2015年至今已有幾百萬條記錄。當我嘗試加載整個數據時,它會在停止前運行約2小時並引發錯誤SQL Server - INSERT INTO覆蓋現有數據
事務日誌 - 完整。
那麼我現在要做的是打破了時間框架分爲兩個部分在WHERE
條款 YEAR >= 2016
並插入值,然後修改INSERT
聲明 YEAR >= 2015 AND YEAR < 2016
。當我執行此操作時,它會覆蓋現有的2016年數據,但不會覆蓋2017年的數據。所以基本上整個2016年沒有收益。
我錯過了什麼嗎?
這真的很煩人,因爲我最終花費數小時才加載數據。
代碼
INSERT INTO <tablename>
SELECT *
FROM
(SELECT <columnnames>
FROM <few join statements>
WHERE <calendaryear >= 2016
GROUP BY <statements>) a -- this loads data from 2016 to present.
INSERT INTO <tablename>
SELECT *
FROM
(SELECT <columnnames>
FROM <few join statements>
WHERE <calendaryear >= 2015 AND calendaryear < 2016
GROUP BY <statements>) a --this loads data from 2015 to 2016
執行前一個被覆蓋的第二條語句後。在這裏,我將其顯示爲2個單獨的查詢,但實際上我只是將日曆報表註釋掉並作爲2個單獨的查詢運行。
謝謝。
將恢復模式設置爲簡單恢復。這應該有助於日誌溢出。 –
不幸的是,這是我的DBA的工作,我不能那樣做。我關心的是查詢本身。 – sqlearner
如果您正在使用'INSERT INTO',則會覆蓋現有的2016年數據,但不會2017年的數據_沒有意義。在運行「2015年<=年和年<2016年」之前,您是否檢查過目標表中是否有2016年數據? –