Laden...

nur neue DataRows kopieren

Erstellt von leCsharp vor 11 Jahren Letzter Beitrag vor 11 Jahren 617 Views
Thema geschlossen
L
leCsharp Themenstarter:in
5 Beiträge seit 2012
vor 11 Jahren
nur neue DataRows kopieren

verwendetes Datenbanksystem: MS SQL Server 2008

Hallo zusammen,
ist wahrscheinlich ne blöde Frage aber habe beim googlen nichts gefunden.

Ich schreibe mir im Moment ne kleien Anwendung die Daten von Tabelle a in Tabelle b kopieren soll.
Tabelle a ist im Moment aber ca. 300MB groß und wird noch wachsen.
Deswegen wäre es ja blöd mit DataTable.Copy() immer die gesammt Tabelle zu kopieren.

Gibt es eine Funktion, die nur neue Daten in Tabelle b kopiert?

Oder muss ich mir dafür etwas selber schreiben?
Wenn ja: wie wäre da die beste Vorgehensweise?
Einfach den Primary key vergleichen?

Im Vorraus schonmal vielen Dank!

L
416 Beiträge seit 2008
vor 11 Jahren

Wie füllst du denn deine DataTable?
Oder anders: füll sie doch einfach nur mit Datensätzen die noch nicht in Tabelle b sind.

V
66 Beiträge seit 2010
vor 11 Jahren

Wäre es nicht einfacher, das mit einem SQL-Statement abzuhandeln und sowieso der Datenbank zu überlassen?

L
leCsharp Themenstarter:in
5 Beiträge seit 2012
vor 11 Jahren

Oder anders: füll sie doch einfach nur mit Datensätzen die noch nicht in Tabelle b sind.

Ist ja quasi das was ich im ersten Post gefragt habe.
Gibt es eine Funktion dafür oder muss ich mir etwas selbst schreiben, was z.B. den PrimaryKey vergleicht?

Mein DataTable fülle ich mit:


SqlDataAdapter da = new SqlDataAdapter("Select * from table", sqlConnection);
DataSet ds = new DataSet();
da.Fill(ds, "table");
DataTable tbl = new DataTable();
tbl = ds.Tables["table"];

Also einfach alles rein.

@vagtler: du meinst ne stored procedure anlegen?
darüber habe ich noch nicht nachgedacht.
kann man die zeitgebunden, also z.b. alle 24h automatisch ausführen lassen?

V
66 Beiträge seit 2010
vor 11 Jahren

@vagtler: du meinst ne stored procedure anlegen?
darüber habe ich noch nicht nachgedacht.
kann man die zeitgebunden, also z.b. alle 24h automatisch ausführen lassen?

Klar, mit dem SQL Server Agent.

Eine kurze Erläuterung der Vorgehensweise findet sich bei Stack Overflow.

Und das Query zum Kopieren nur in der Zieltabelle noch nicht vorhandener Datensätze ist dann wohl eher trivial.

L
leCsharp Themenstarter:in
5 Beiträge seit 2012
vor 11 Jahren

Und das Query zum Kopieren nur in der Zieltabelle noch nicht vorhandener Datensätze ist dann wohl eher trivial.

ja das habe ich mir auch gedacht bis dann


INSERT INTO dbo.service_cpu2 (servicecheck_id, avg_1)
SELECT servicecheck_id , avg_1
FROM dbo.service_cpu
where dbo.service_cpu.servicecheck_id > dbo.service_cpu2.servicecheck_id

bei

dbo.service_cpu2.servicecheck_id

ein

The multi-part identifier "dbo.service_cpu2.servicecheck_id" could not be bound.

auswirft -.-

Weißt du/jemand anders zufällig woran das liegt?
Beim googlen habe ich jetzt jede Menge Gründe gefunden, das könnte was dauern bis ich da was passendes raus habe.

V
66 Beiträge seit 2010
vor 11 Jahren

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1 sowie 1.1.1.

Mit ein wenig Kreativität bei der Suche wärst Du sicherlich ganz schnell auf Hinweise wie z.B. in Stack Overflow gestoßen.

Thema geschlossen