Vergleich zweier Dateien

RaketenPeter

Mitglied
Hallo Leute

ich bin ien Java Neuling und suche Rat ;)!

Also zum Problem: Ich habe 2 Text Dateien. Beide haben zig tausend zeilen mit folgenden Eintragen:

Ortsname; PLZ; Straße
Ortsname; PLZ; Straße

in der einen Datei stehen die richtigen Daten drin in der andern die zu überprüfenden!
ich habe nun diese Dateien ausgelesen und nach ; getrennt und lege sie Zeilenweise in ein Array! diese möchte ich nun vergleichen und bei fehlern einen String in eine neue Datei Schreiben! (Grundlage: Beide Dateien beinhalten Datenbankwerte. Eine Datei richtig eine falsch! Die falschen muss ich per Update (Ausgabe Stirng der in die Datei Nr.3 soll) ändern)
Nun muesste ich eine Schleife bauen die mir die eintraege vergleicht und wenn PLZ und Strasse gleich sind die Orte ( die falsch sind in der einen datei) in den update befehl schreiben.
Habe auch schon was von arraylisten gehoert weiss nun nicht was ich am geschicktesten machen soll! Jemand ideen oder Lösungansätze?

Hoffenbtlcih hab ich es einigermaßen verstaendlcih ausgedrückt ;)!


Vielen Dank im vorraus ;)
 
Um ehrlcih zu sien (schande auf mein Haupt) bin ich auf diese Idee noch gar nicht gekommen! Allerdings handelt es sich um ein empfindliches System in dem ich nicht einfach Datenändern möchte. Es wäre mir lieber ich könnte mir erst diese update Datei erstellen in der die zu ändernden Datensaetze drin stehen um es vorab zu überprüfen.
 
Es wäre mir lieber ich könnte mir erst diese update Datei erstellen in der die zu ändernden Datensaetze drin stehen um es vorab zu überprüfen.

Auch das ist über die Datenbank möglich!

SQL:
SELECT "UPDATE tabelle SET feld1 = '" || fehler_fälle.richtiger_wert || "' WHERE id = '" || fehler_fälle.falscher_eintrag_id || "';"
FROM fehler_fälle;
 
ok ich versteh die abfrage nciht ganz ;) ! ich benutze eine Oracle Datenbank und die beiden selects fuer meien Dateien sind folgende!

SQL:
-- falsche daten
select distinct Strasse,ort,plz from erkennung_anrufer;
--richtige daten
select distinct weg,ort,plz from adressen where plz between '66000' and '66999' order by plz;
 
Zuletzt bearbeitet von einem Moderator:
SQL:
SELECT DISTINCT id,Strasse,ort,plz FROM erkennung_anrufer
where strasse || ort || plz not in (
SELECT DISTINCT weg || ort || plz FROM adressen WHERE plz BETWEEN '66000' AND '66999' ORDER BY plz) into temp fehler_faelle;

Dann hast du die falschen Adressen in einer Tabelle und kannst den schon genannten Select (in angepasster Form) auf die Fehler loslassen.
 
da sagt er mir das die rechte klammer fehlt! lösche ich das order by raus wirft er mir vor das der statement nicht richtig beendet wurde ;) setze ich dann im subselect ein semikoln dann meckert er wieder wegen der fehlenden rechten klammer ;)!
 
Das order by plz muss definitiv raus, ich hab das nur von deinem Select kopiert, darum :-)
Das Semikolon im Subselect ist definitiv falsch.

Meine Zeit mit Oracle ist jetzt schon einige Zeit her, evtl musst du da auch nochmal tempTable-Zwischenschritte einlegen, bin mir aber ziemlich sicher, dass Oracle das können müsste.
 
kann sein das oracle das kann ;D aberich vemrute auch das ich das nicht darf ! es handelt sich hier um eine embedded DB ;) deswegen war mein erster ansatz auhc die Dateien extern verarbeiten! ;) ich kann definitiv keine festen tabellen anlegen deswegen weiss ich auch ned ob ich temp dateien anlegen kann! ;)
 
Das sind keine Dateien sonder tempTables, Tabellen, die nur im User-Kontext angelegt werden und auch nur für die Dauer der Datenbank-Session existieren, ab- und wieder anmelden und die sind weg.

Im Normalfall beschränkt man einen User nicht soweit, dass man das nicht dürfte.

Teste es doch einfach mal:

SQL:
select first 100 from tabelle into temp test;
select * from test;
drop table test;

Und nein, first dürfte oracle nicht kennen, allerdings ist das auch nur ein Beispiel und an die TopN-Analysen von Oracle denke ich ungern zurück :-)
 
Zurück