AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Massendaten täglich in eine DB speichern - Was macht Sinn?
Thema durchsuchen
Ansicht
Themen-Optionen

Massendaten täglich in eine DB speichern - Was macht Sinn?

Ein Thema von Piro · begonnen am 25. Nov 2010 · letzter Beitrag vom 26. Nov 2010
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Piro
Piro

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

Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 21:50
Datenbank: MS SQL • Version: 2005 • Zugriff über: ADO
Moin zusammen,

ich habe eine CSV Datei, die täglich erstellt wird und rund 100.000 Zeilen hat. Ich möchte die Daten in eine MS SQL DB schreiben, um Sie später besser zu verarbeiten.

Meine erste Idee war, immer die vorhandene Daten in der DB löschen und dann die neuen Daten in der DB schreiben. Das hat aber zur Folge, dass sich mein Primärschlüssel rapide erhöht und schnell an seine Grenzen stößt und überläuft.

Meine zweite Idee war, jeden Datensatz aus der Datei mit den Daten aus der DB zu vergleichen und ggf. ein Update oder Insert durchzuführen und das aktuelle Datum mit zu speichern. Nach dem Einlesen wird dann kontrolliert, welche Datensätze in der DB kein aktuelles Datum hat und wird gelöscht.

Ich tendiere zur 2. Idee. Leider sind die Kriterien für ein Update oder ein Insert nicht immer genau definiert. Es gibt keine eindeutige Identifikation.

Habt Ihr eventuell noch andere Idee, wie man am geschicktesten die Daten in die DB bekommt?

Vielen Dank im Voraus.

Sven
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 21:54
Hi,

verstehe ich richtig, dass du die DB quasi jeden Tag komplett leerst und dann erst die Daten neu einfügst?


Edit: Was ist der primärschlüssel - einfach eine künstliche ID?

LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

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

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 22:04
Das war meine erste Idee, die mir so spontan einfiel.

Ja, ich wollte erst alle Daten löschen und dann die neuen Daten speichern.

Der Primärschlüssel ist der eindeutige Index des Datensatzes, der hochgezählt wird. Gibt es in jeder DB in jeder Tabelle, um zwischen 2 Tabellen zu referenzieren.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 22:09
Hi,

wenn ich dein Problem richtig verstehe (ID wird zu groß für den Wertebereich), dann könntest du nach dem Löschen doch einfach den Value wieder auf 1 setzen.

Für mySQL wäre das die Syntax:
ALTER TABLE 'tablename' AUTO_INCREMENT =1
LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 22:11
Mal ganz blöd gefragt: Was für einen Typ hast du denn für den Primärschlüssel, dass der sehr schnell explodieren sollte? Nehme ich allein mal den Delphi Integer (und hier nicht mal unsigned) dann hast du circa 21474 Tag Zeit. Reicht dir das nicht? Dann nimm einfach unsigned int, dann hast immer das doppelte. Und in Datenbanken gibts mit Sicherheit auch ein Pendant zu Int64. Also Löschen brauchst du rein gar nichts.

Und DBMS sind zudem dafür ausgelegt eine derart große Anzahl an Daten zu halten, zumal du ja kein MySQL oder SQLite hast. MS SQL ist ein ausgewachsenes SQL-System.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#6

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 22:14
Nimm doch SQLite. Dann haste sogar noch bessere Kontrolle und kannst die Dateien "wegschmeißen" (i.e. löschen) wenn nötig. Alternativ kann man sie auch sichern usw ...

Eine bessere Alternative zu CSV ist es allemal und damit haste deinen Code gleich zukunftssicher falls X-Plattform mal ein Problem werden sollte

Manko: auf eine SQLite-DB kann nur als Datei zugegriffen werden (nunja, zumindest ohne größere Änderungen), was auch bedeutet, daß es nur einen schreibenden Client geben kann.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#7

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 22:15
Aber es ist schon etwas komisch das die ID überläuft, oder?
Selbst bei 100.000 neuen Einträgen pro Tag sollte es um die 100 Jahre dauern, bis ein 32bit-Ganzzahlwert überläuft.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 22:16
Und wenn man einen BIGINT nimmt, hat man noch länger Ruhe.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#9

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 22:17
mkinzler: Wie lange hast du denn vor zu leben!?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

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

AW: Massendaten täglich in eine DB speichern - Was macht Sinn?

  Alt 25. Nov 2010, 22:19
Danke für die Erklärungen. War dann wohl etwas ängstlich mit meiner ID. Will nur sicherstellen, dass es auch noch nach mir läuft.

Ich bin nur kein Freund von Daten rein -> raus -> rein -> und so weiter.

Ich glaube, ich werde meine 2 Idee umsetzen. Neue Daten aktualisieren bestehende Daten und nicht aktuelle Daten werden gelöscht. Das sollte das Beste sein, oder?

Mich würde mal interessieren, welche Logik ihr so verwendet für solche Aufgaben.

Vielen Dank im Voraus für die guten Antworten.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 13:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz