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
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

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

  Alt 25. Nov 2010, 23:09
@alzaimar: könntest du mir eventuell einen beispielhafteren Code geben und kurz erklären was der macht. Der Ansatz ist echt gut.
1. Zeile: Erzeugen einer Tagestabelle auf Grundlage einer Vorlage.
2. Zeile: Wir erzeugen einen Index
3. Zeile: Wir importieren eine CSV-Datei wuppdiwupp-und-eins-fix-drei 1:1 in die Tagestabelle

Die genaue Syntax kann ich morgen posten. Hier habe ich sie nicht. Du kannst sie aber selbst ergoogeln. "MSSQL BULK INSERT"
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

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

  Alt 26. Nov 2010, 00:32
Code:
BULK INSERT
in eine frische Tabelle ist das richtige Stichwort.

Nehmen wir mal an deine Tabelle mit den Daten heißt
Code:
IMPORT_DATA
Dann würde ich wie folgt vorgehen:
1. CSV-Daten per BULK INSERT in die Tabelle
Code:
IMPORT_DATA_<YYYYMMDD>
(ersetze "<YYYYMMDD>" mit dem Tagesdatum) importieren.
2. Ist alles korrekt importiert worden dann innerhalb einer Transaktion
Code:
DROP TABLE IMPORT_DATA;
EXEC sp_rename '<Schema>.IMPORT_DATA_20101126', 'IMPORT_DATA';
Sollte der Import mal nicht funktionieren, dann sind die alten Daten noch da.

Wenn die Daten auch noch für einen Zeitraum x archiviert werden sollen, dann erzeuge eine Archiv-Tabelle mit folgenden Feldern:
Code:
Zeitpunkt [PRIMARY KEY]
ZeitID [PRIMARY KEY] // der Index aus IMPORT_DATA
// jetzt die restlichen Felder aus IMPORT_DATA
Über den Zeitpunkt kannst du dann Reorganisieren.

Sollte es Performance-Probleme geben, ist es ratsam diese Archiv-Tabelle auf einer anderen Festplatte anzulegen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 23:40 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