Ich stehe vor einem Problem, ich hoffe, es von hier gelöst zu bekommen. Ich habe 3 verschiedene Tabellen in einem DataSet
und möchte es in die Datenbanktabelle einfügen.Einfügen/Aktualisieren der gesamten DataTable in die Datenbanktabelle C#
Ich weiß, ich kann dies mit SqlBulkCopy
tun, aber es gibt einen Haken, und das ist ich möchte überprüfen, ob die Daten bereits in der Datenbank vorhanden ist, dann möchte ich es anstelle von einfügen aktualisieren.
Und wenn die Daten nicht in der Datenbanktabelle vorhanden sind, möchte ich es dann einfügen. Jede Hilfe dazu wäre willkommen.
Ich weiß, ich kann es durch jeden Datensatz iterieren und dann eine Prozedur feuern, die auf seine Existenz prüfen wird, wenn es das Update existiert oder sonst einfügen. Aber die Datenmenge ist riesig und das Durchlaufen jedes Datensatzes wäre ein Zeitnahmeprozess, ich möchte diesen Ansatz nicht verwenden.
Grüße
Können Sie nicht nur ** (1) ** bulk fügen Sie dies in Staging-Tabellen in SQL Server in einem einzigen Durchlauf, und dann ** (2) ** auf der Datenbank Seite aktualisieren Sie Ihre tatsächliche Datentabelle aus den Staging-Tabellen mit T-SQL-Code auf dem Server, die diese Logik "wenn nicht existiert dann einfügen"? Das wäre viel schneller als das lokale Iterieren eines großen Datasets und das Einfügen nur einiger Zeilen. –
Ich habe keine Berechtigung, neue Tabellen in der Datenbank zu erstellen. –
Das Ausführen von Lese- und Ausführungsbefehlen in .NET kann aus vielen Gründen ineffizient sein. Sie können SQL-Anweisungen wie check und Insert/Update je nach Vorhandensein des Datensatzes erzeugen. Aber das führt zu Hude-Text-Datei, die wahrscheinlich schwer zu manipulieren sein wird. Sie können die IDs mit einfachen C# -Anwendung erhalten Sie können entsprechende Sql-Befehle/Anweisungen generieren. Eine andere Option könnte sein, alle Datensätze einzufügen und auf Primärschlüsselausnahmen zu warten, um sie später zu aktualisieren. – ali