Thema: Delphi Datensätze vergleiche

Einzelnen Beitrag anzeigen

Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
329 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Datensätze vergleiche

  Alt 1. Aug 2007, 12:51
Datenbank: Interbase • Version: 6.01 • Zugriff über: IBX
Hallo,
ich hänge immernoch an meinem Problem mit den 800.000 Datensätze. Nun hänge ich an einer anderen Stellen, da nun die Wünsche geändert wurden. Ich beschreibe mal die Gegebenheiten und mein Problem. Villeicht könnt Ihr mir ja nochmals helfen.

Als Ergebnis sollte herrauskommen:
Welche sind neue Daten und bei welchen hat sicht etwas geändert.

Es liegen zwei CSV Dateien mit jewals fast 800.000 Datenstzäte vor. Diese beiden Dateien habe ich ich zwei Tabellen im Interbase geschrieben. (Kein Problem geht sehr zügig)

Die 1. Tabelle sind so aufgebaut

Feld1 VarChar(150) Character Set ISO8859_1
Feld2 VarChar(150) Character Set ISO8859_1
Fled3 VarChar(40) Character Set ISO8859_1
Feld4 VarChar(3) Character Set ISO8859_1
Feld5 VarChar(20) Character Set ISO8859_1
Fled6 VarChar(10) Character Set ISO8859_1

Die 2. Tabelle sieht genau so aus hat jedoch noch ein Feld für ein Datum

In der 1. Tabelle sind die alten Daten und in der 2. Tabelle sind die neuen Daten.

Nun wollte ich in alle Datensätze in der Tabelle2 das aktuelle Datum schreiben, wenn die Datensatz in der Tabelle1 vorhanden ist. Somit müßte der rest ohne Datum dann neu sein oder geändert worden.

Dazu habe ich es zuerst versucht mit einen Update

SQL-Code:
 Update Tabelle2
Set Datumsfeld = '01.08.07'
where Feld1 || Feld2 || Feld3 || Feld4 || Feld5 || Feld6
in (Select Feld1 || Feld2 || Feld3 || Feld4 || Feld5 || Feld6 From Tabelle2)
Das ganze lief zwei Stunden und es hat sich nicht getan. Da habe ich es mal abgebrochen, da es villeicht noch Tage dauern kann bis das Ergebnis vorliegt.

Dann habe ich auf jedes Feld einen Index gesetzt. Einen Index über alle Felder geht ja leider nicht, da er ja zu "breit" ist. Leider

Das ganze mit den Abgleich kann auch genre 10 Stunden dauern nur das Ergebnis sollte stimmen. Also dacht ich mir mach es halt über ein Schleife. Ja mir ist bekannt es ist das schlechteste ist was ich machen kann.
Alle Datensätze der Tabelle 1 hole ich in eiene TIBQuery und mittels einer Schleife suche dann mittels einer TIBQuery den Datensatz in Tabelle2. Wenn das Ergebnis nicht Leer ist setzte ich das Datum. Wenmn ein Feld nicht übereinstimmt wurde etwas geändert. Das ganze geht auch, würde jedoch ca. 123 Stunden dauern und das ist mir etwas zu lange.

Kann mir jemand hier einen Tip geben wie ich es schneller hinbekommen werden. Man die Leute haben wünsche. Sage mir mal den Unterschied bei 800.000 Datensätzen.

Tanja
Tanja
  Mit Zitat antworten Zitat