2016-06-19 4 views
0

Ich habe eine Excel-Tabelle in SQL Server 2016 Express importiert und mithilfe des Importassistenten eine Tabelle erstellt.Fügen Sie eine oder mehrere Zeilen aus Excel in eine vorhandene SQL Server-Tabelle ein

Wenn ich nun mein Excel-Arbeitsblatt aktualisiere, z. B. eine oder mehrere Zeilen hinzufüge, möchte ich auch meine SQL Server-Tabelle aktualisieren, dh die eine oder mehrere Zeilen zur Tabelle hinzufügen. Was ist der einfachste Weg, dies zu tun? In einer "append" -Reihenweise. Ich möchte nicht die ganze Excel-Tabelle erneut hinzufügen.

Antwort

1

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

+0

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

+1

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

Verwandte Themen