Hallo, ich habe hier Datenbank-Einträge, in denen es ein Notiz-Feld gibt. Dort wird quasi Fließtext eingegeben. Leider sind durch fehlerhafte Synchronisations-Vorgänge die Einträge innerhalb des Notiz-Feldes verdoppelt und teilweise sogar verdreifacht worden. Also z.B. so: Dies ist eine Testnotiz, hier stehen ein paar Zeilen, oder aber auch sehr viele... Dies ist eine Testnotiz, hier stehen ein paar Zeilen, oder aber auch sehr viele... Dies ist eine Testnotiz, hier stehen ein paar Zeilen, oder aber auch sehr viele... Natürlich wurde in der Zwischenzeit mit den Notizen gearbeitet, so dass sich die Blöcke teilweise unterscheiden. So könnte z.B. bei meinem Beispiel im ersten Block etwas geändert, gelöscht oder hinzugefügt worden sein: Dies ist eine Testnotiz, hier steht jetzt eine geänderte Zeile, oder aber auch sehr viele... Dies ist eine Testnotiz, hier stehen ein paar Zeilen, oder aber auch sehr viele... Dies ist eine Testnotiz, hier stehen ein paar Zeilen, oder aber auch sehr viele... Wenn es nur ein paar Datensätze und nur wenige Zeilen pro Notiz wären, würde ich es sicherlich per Hand erledigen. So aber suche ich nach irgend einer Hilfe, die diesen Korrektur-Prozess vereinfacht. Das Problem ist, dass es keine Duplikate im klassischen Sinne sind, sondern so etwas wie Duplikate auf Feld-Inhalt-Basis. Die Daten sind in der iCloud, Kommentare wie "BackUp zurückspielen" bitte verkneifen, wenn es so einfach wäre, hätte ich das schon längst getan. Für hilfreiche Lösungsansätze wäre ich euch sehr dankbar!
Ändert sich immer nur der erste "Block"? Gibt es eine Möglichkeit zu erkennen wann ein neuer Block in dem Feld anfängt(z.B. Wie im Beispiel die Zeile "Dies ist eine Testnotiz,")? Kann man mit einer Programmiersprache(z.B. Java) auf die Datenbank zugreifen? Wenn ja, wäre ein Ansatz ein folgendes Programm: Loop über die betroffene Tabelle - Lesen des Datensatzes - Erkennungsmerkmal des Blocks im Feld ermitteln - Entfernen des Feldinhalts ab der Stelle an der das Erkennungsmerkmal wieder auftritt - Zurückschreiben(Update) des Datensatzes mit dem verkürzten Feldinhalt
Worf schrieb: > Das > Problem ist, dass es keine Duplikate im klassischen Sinne sind, sondern > so etwas wie Duplikate auf Feld-Inhalt-Basis. Ok, wenn das das Problem ist, wie würdest du die Sache denn angehen, wenn es klassische Duplikate wären? Worf schrieb: > Die Daten sind in der > iCloud, Kommentare wie "BackUp zurückspielen" bitte verkneifen, wenn es > so einfach wäre, hätte ich das schon längst getan. Es ist nett, dass du uns mit auf den Weg gibst, welche Werkzeuge nicht zur Verfügung stehen. Leider ist die umgekehrte Richtung die interessantere: Was ist das für eine Datenbank? Wie kannst du darauf zugreifen, d.h. welchen Werkzeugen ist dieses Problem zugänglich? Auch wenn das Zurückspielen von Backups das Problem offensichtlich nicht löst, könnten vorhandene Backups gute Lösungsansätze ermöglichen. Daher: Was für Backups gibt es? Worf schrieb: > So aber suche ich nach > irgend einer Hilfe, die diesen Korrektur-Prozess vereinfacht. Bis die Beschreibung wesentlich präziser wird: Versuch's mit einer Kanne starkem Kaffee und sei dankbar, dass dein Gehirn Mustererkennung gut kann.
Blinky schrieb: > Ändert sich immer nur der erste "Block"? Leider nein. Blinky schrieb: > Gibt es eine Möglichkeit zu erkennen wann ein neuer Block in dem Feld > anfängt(z.B. Wie im Beispiel die Zeile "Dies ist eine Testnotiz,")? Keine zuverlässige - wenn überhaupt dann nur über die vorhandenen Redundanzen, die mit steigender Buchstabenanzahl einen wiederholten Block wahrscheinlicher erscheinen lassen. Blinky schrieb: > Kann man mit einer Programmiersprache(z.B. Java) auf die Datenbank > zugreifen? Ja, man kann z.B. mit Objective-C das Notiz-Feld auslesen. Martok schrieb: > Ok, wenn das das Problem ist, wie würdest du die Sache denn angehen, > wenn es klassische Duplikate wären? Unter OS X in der Kontakte-App im Menü "Visitenkarte" den Menüpunkt "Nach Duplikaten suchen..." nutzen. Was hat das jetzt mit meinem Problem zu tun? Martok schrieb: > Leider ist die umgekehrte Richtung die > interessantere: Was ist das für eine Datenbank? Wie kannst du darauf > zugreifen, d.h. welchen Werkzeugen ist dieses Problem zugänglich? Wie ich schon schrieb sind die Daten in der iCloud. Somit gilt... Datenbank = iCloud Zugriff und Werkzeuge = alles das was Apple im Rahmen von Web-Interface, iOS-App oder OS X App erlaubt. Oder alternativ mit Xcode via API. Martok schrieb: > Bis die Beschreibung wesentlich präziser wird: Versuch's mit einer Kanne > starkem Kaffee und sei dankbar, dass dein Gehirn Mustererkennung gut > kann. Da die Beschreibung nun wesentlich präziser ist, bin ich gespannt auf Deine Vorschläge.
Worf schrieb: > Da die Beschreibung nun wesentlich präziser ist, bin ich gespannt auf > Deine Vorschläge. Da die Beschreibung nun immer noch gehaltloses Geschwafel ist, sind wir gespannt auf den Link, unter dem du deine Datenbank mit der Allgemeinheit teilst, weil wir dir sonst keine weiteren Hilfestellungen geben können und werden.
Naja, das Problem lässt sich durchaus komplett losgelöst von der Art der Datenbank und der Anbindung betrachten. Denn zu betrachten ist jedes Textfeld isoliert für sich. Wie der Inhalt jeweils bestimmt wird und wie er nach Änderungen wieder in die Datenbank (oder was auch immer) zurücktransportiert wird, ist zweitrangig. Zunächst geht es darum, zu untersuchen, ob es im Textfeld überhaupt Doubletten gibt. Dazu ist die Anzahl des Auftretens jedes Wortes zu suchen.
1 | Dies ist eine Testnotiz, |
2 | hier stehen ein paar Zeilen, |
3 | oder aber auch sehr viele... |
4 | |
5 | Dies ist eine Testnotiz, |
6 | hier stehen ein paar Zeilen, |
7 | oder aber auch sehr viele... |
8 | |
9 | Dies ist eine Testnotiz, |
10 | hier stehen ein paar Zeilen, |
11 | oder aber auch sehr viele... |
In diesem Fall taucht jedes Wort genau dreimal auf. Gibt es Häufungen von Wortdoubletten (oder -mehrfachen), dann ist anzunehmen, daß so ein "Redundanzstörfall" vorliegt. Jetzt kann weiterverfahren werden: Das erste Wort im Text wird im Folgetext gesucht. Im Beispiel wäre das "Dies". Mit einem Textvergleich lässt sich nun herausfinden, ob eine Textredundanz vorliegt; der Text von der Anfangsposition bis vor das zweite Auftreten des Wortes "Dies" wird mit dem Text ab der Position dieses zweiten "Dies" verglichen. Ist er identisch, kann abgebrochen werden und der Text ab dem zweiten gefundenen "Dies" gelöscht werden.
Worf schrieb: > ich habe hier Datenbank-Einträge, in denen es ein Notiz-Feld gibt. Dort > wird quasi Fließtext eingegeben. Leider sind durch fehlerhafte > Synchronisations-Vorgänge die Einträge innerhalb des Notiz-Feldes > verdoppelt und teilweise sogar verdreifacht worden. Also z.B. so: > > Dies ist eine Testnotiz, > hier stehen ein paar Zeilen, > oder aber auch sehr viele... > > Dies ist eine Testnotiz, > hier stehen ein paar Zeilen, > oder aber auch sehr viele... > > Dies ist eine Testnotiz, > hier stehen ein paar Zeilen, > oder aber auch sehr viele... > > Natürlich wurde in der Zwischenzeit mit den Notizen gearbeitet, so dass > sich die Blöcke teilweise unterscheiden. So könnte z.B. bei meinem > Beispiel im ersten Block etwas geändert, gelöscht oder hinzugefügt > worden sein: Wirklich nur im ersten oder auch in anderen (temporal gesehen vermutlich "früheren"). Wenn spätere gewollte Änderungen immer nur im ersten existierenden Block erfolgt sein können, ist die Sache eigentlich recht trivial. Was die bescheuerte Idee betrifft, Daten dort abzulegen, wo man keine Kontrolle darüber hat und dann auch noch, kein Backup zu besitzen: Soviel vollständige Idiotie muss einfach mit Maximalstrafe belegt sein: also komplett mit Rauschen durchsetzten Daten. No mercy. Nur so lernen auch die krass unfähigen Frickler auf die harte Tour, worauf es bei der Datenhaltung wirklich ankommt...
> Redundanzen in Texten entfernen
Bei Politiker-Reden ist das jedenfalls ganz einfach, geht schon unter
CP/M bzw. DOS:
ALLES ersatzlos streichen ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.