AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Massendaten ständig aktualisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Massendaten ständig aktualisieren

Ein Thema von Piro · begonnen am 4. Dez 2010 · letzter Beitrag vom 6. Dez 2010
Antwort Antwort
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: Massendaten ständig aktualisieren

  Alt 4. Dez 2010, 21:48
Noch ein Vorschlag:
Du schießt alles in eine Stored Prozedure rein
die fährt dann ein "Pseudocode"
Code:
If Exists(Select * from Tabelle where id=@ID)
  Update Tabelle set a=@,b=@b ... where id=@ID
else
  Insert into Tabelle (id,a,b,..) Values (@id,@a,@b..)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Massendaten ständig aktualisieren

  Alt 4. Dez 2010, 21:57
@Bummi: Verliere ich dann aber nicht an Geschwindigkeit. Er führt dann jedesmal ein INSERT oder UPDATE aus.

In meinem Code habe ich nur einmal ein INSERT welches dann nur noch mit Parametern arbeitet und das UPDATE wird immer wieder neu erstellt und verwendet.

Wo ist der Vorteil einer Stored Prozedure? Sorry für die Frage.

Mal was anderes kann ich die UPDATE Routine nicht wie die INSERT vor die Schleife mit einer Variablen für die ID legen? Weißm leider nicht wie das gehen soll.

Geändert von Piro ( 4. Dez 2010 um 22:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Massendaten ständig aktualisieren

  Alt 4. Dez 2010, 22:14
Er führt ein Insert aus für das was noch nicht drin ist, das soll eh so sein.
Ob das Update schneller ist oder die Überprüfung ob ein Update nötig ist und dann gegf. ein Update durchzuführen müsste man evaluieren, ich denke der Unterschied wird marginal ausfallen.
Der Vorteil liegt bei von mir beschreibenen Möglichkeiten darin daß Du mit dem Minimum an Dattentransfer auskommst, die SQL's innerhalb des Servers, vor allem bei Massenoperationen sind ja um Welten schneller.
Ich persönlich würde die erste Variante vorziehen, hier vielleicht sogar aus der Echttabelle löschen wo die ID in der Hilfstabelle vorhanden ist und dann die komplette Hilfstabelle reinschießen.
Zitat:
Wo ist der Vorteil einer Stored Prozedure?
Das die komplette Datenmanipulation da stattfindet wo die Daten im benötigten Format vorliegen, keine Transfer übers Netz, keine hin und her Wandlung durch Treiberschichten, Delphiklassen etc.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Massendaten ständig aktualisieren

  Alt 6. Dez 2010, 12:35
bei solchen Datenmengen (und wahrscheinlich wird es nicht weniger) würde ich es per Linked Server CSV versuchen.

Also Datei auf den Server kopieren, verdrahten (linken) und dann reines SQL oder auch per Stored Proc falls notwendig. Schneller wirst Du es mit keinem Clientprogramm hinbekommen.

hier ist ein link mit handlichen Anweisungen:
http://forums.databasejournal.com/sh...ad.php?t=38583

Weiß aber nicht, ob das lizenztechnisch in jedem ms sql server drin ist.

Gruß, jo
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Massendaten ständig aktualisieren

  Alt 6. Dez 2010, 15:45
Danke an alle für die großartigen Antworten. Sie haben mir sehr geholfen.

Ich habe derzeit 3.500 Datensätze die ich mit INSERT und UPDATE (mit Parameterübergabe) in DB schiebe.
Das Ganze dauert 20 Sekunden und ist völlig ausreichend.

Vielen Dank nochmal. Super Forum.
Gruß, Sven
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

AW: Massendaten ständig aktualisieren

  Alt 6. Dez 2010, 15:52
Hallo zusammen,

eine reine Verständnisfrage. Wäre für den Abgleich und das Einfügen der Daten in die Datenbank eine Stored Procedure besser geeignet ? Bei der Variante in Beitrag #1 erzeugt doch zu viel Traffic, da immer die Anfragen und das Ergebnis zwischen Datenbankserver und der Anwendung hin und her transpüortiert werden müssen.

Soweit ich es weiß kann der MS SQL-Server doch Stored Procedure.

Edit:
Ich würde für die Update-Anweisung und für die Select-Anweisung kein QuotedStr benutzen sondern Parameter verwenden. Ist aus meiner Sicht etwas übersichtlicher.
Rolf Warnecke
App4Mission

Geändert von RWarnecke ( 6. Dez 2010 um 15:55 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz