Ich habe ein seltsames Problem hier, ich versuche, einige Daten in eine neue Tabelle in SQL Server zu laden. Die Tabelle hat seit 2015 bis heute nur wenige Millionen Datensätze. Wenn ich versuche, ganze Daten zu laden, läuft es für ungefähr 2 Stunden, bevor es stoppt und einen FehlerSQL Server - INSERT INTO überschreibt vorhandene Daten
Transaction log - Full auslöst.
Also, was ich versuche, den Zeitrahmen in 2 Teile in WHERE
Klausel YEAR >= 2016
und Werte einfügen und ändern Sie dann die INSERT
Anweisung YEAR >= 2015 AND YEAR < 2016
zu tun ist, brechen. Wenn ich das tue, überschreibt es die vorhandenen 2016 Daten, aber nicht die 2017 Daten. Also im Grunde das ganze 2016 gibt nichts zurück.
Fehle ich etwas?
Es ist wirklich ärgerlich, da ich Stunden damit verbringe, nur Daten zu laden.
-Code
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
die zweite Anweisung wird der ehemalige überschrieben Nach der Ausführung. Hier habe ich als 2 separate Abfragen gezeigt, aber in Wirklichkeit ich nur die Kalenderauszüge Aussagen kommentieren und als 2 separate Abfragen ausführen.
Danke.
Stellen Sie Ihren Wiederherstellungsmodus auf einfache Wiederherstellung. Das sollte bei den Log-Überläufen helfen. –
Leider ist das mein DBA-Job, den ich nicht tun kann. Mein Anliegen ist die Abfrage selbst. – sqlearner
Wenn Sie 'INSERT INTO' verwenden, dann überschreibt _it die vorhandenen 2016 Daten, aber nicht die 2017 Daten_ macht keinen Sinn. Haben Sie überprüft, dass Sie Daten von 2016 in der Zieltabelle haben, bevor Sie die Einfügung von "2015 <= Jahr und Jahr <2016" ausführen? –