Sie haben nach der einfachsten Lösung gefragt. Da Sie mit dem Assistenten bereits vertraut sind, scheint es mir der einfachste Weg zu sein, die "aktualisierte" Excel-Tabelle/-Datei mit dem Assistenten in SQL Server Express zu importieren. Importieren Sie es jedoch in eine neue Tabelle (ohne die alte zu entfernen).
Fügen Sie anschließend neue Zeilen ein oder aktualisieren Sie die vorhandenen Datensätze auf dem SQL Server mit einer einfachen SQL-Anweisung MERGE
. Anschließend können Sie die importierte Tabelle erneut löschen/löschen (weil die vorhandene Tabelle aktualisiert wurde).
Während ich Ihre Tabellen nicht kenne, zeigt das folgende SQL - Codebeispiel eine einfache Zusammenführung für eine grundlegende Kundentabelle, wobei tblCustomers
die ausgehende Tabelle wäre (zu aktualisieren/neue Zeilen einzufügen) und tblCustomersNEW
wäre der neue Import (der wieder gelöscht werden, sobald die Aktualisierung/append komplett) ist:
merge dbo.tblCustomers as target
using dbo.tblCustomersNEW as source
on source.ID = target.ID
when matched then
update set target.Name = source.Name,
target.Country = source.Country
when not matched by target then
insert (Name, Country)
values (
source.Name,
source.Country
);
Beachten Sie, dass die MERGE
Anweisung requires a semicolon at the end ähnlich wie CTE
ein Semikolon erforderlich ist, bevor Sie ; With myTable as...
starten.
Weitere Informationen über die MERGE
Anweisung Sie können folgende auf Artikel auf MSDN lesen möchten: https://msdn.microsoft.com/en-us/library/bb510625.aspx
aber dann das Problem weiterhin besteht, seine noch komplizierter, ich den Tisch einfach stattdessen überschreiben könnte ... ist nicht da eine Option linked_server, um mein Excel-Blatt mit dem Server zu verknüpfen und es mit einer gespeicherten Prozedur zu aktualisieren? – user2774480
Interessant, dass Sie dies für einfacher halten. Natürlich ist das auch möglich. Aber dann muss der SQL-Server Zugriff auf diese Excel-Datei haben. Daher müssen Sie die Berechtigungen korrekt einrichten und über eine Dateifreigabe verfügen, auf die SQL und alle Computer zugreifen können, die an der Excel-Datei arbeiten. Danach können Sie die Datei mit 'SELECT * VON OPENROWSET ('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml; HDR = JA; Datenbank = X: \ DataFiles \ CustomersData.xlsx', [Kunden $]); ' – Ralph