Wir haben beim Import nicht aufgepasst und sehr viele Dateien mehrfach archiviert. Ich möchte jetzt alle Duplikate löschen, sodass nur der Datensatz vom jeweils ersten Import in der Datenbank verbleibt.
Zukünftig verhindern
In den Importprofilen legen Sie fest, ob Dateien ohne Rückfrage mehrfach importiert oder ob Dubletten verhindert werden. Aktivieren Sie dazu die Option Nur neue Dokumentdateien importieren.
Vorab beachten
Erstellen Sie eine Sicherung der Archivdatenbank und des Dokumentenverzeichnisses. Am sichersten ist es, eine aktuelle Komplettsicherung vorzuhalten. Nehmen Sie dies bitte ernst.
Beim Löschen von Dokumenten legen Sie fest, ob auch die Datei vom Datenträger entfernt wird. Bei den Dubletten kann es sich um mehrere Datensätze für dieselbe Datei handeln oder um inhaltsgleiche Dateien mit unterschiedlichen Dateinamen. Verweisen zwei Datensätze auf ein und dieselbe Datei, dann dürfen Sie beim Löschen eines Datensatzes die Datei nicht entfernen. Diese wäre dann auch für den verbleibenden Datensatz verloren. Aktivieren Sie die Option Datei löschen also nur, wenn Sie sicher sind, dass jede Dublette eine eigene Datei besitzt.
Die Enterprise-Edition von Office Manager DMS kann Dokumentenklone verwalten. Das sind mehrere Datensätze für dieselbe Datei, also beabsichtigte Dubletten. Wenn Sie das Klonen genutzt haben, müssen diese speziellen Klone beim Löschen ausgelassen werden. Die Standard-Funktion berücksichtigt dies bereits, das unten gezeigt SQL-Skript aber nicht. Blenden Sie die Spalte „Klon“ in die Tabelle ein. Wenn dort ein Zahlenwert enthalten ist, handelt es sich um einen Klon.
Zuerst die Standard-Funktion nutzen
Dokumente werden als Dublette betrachtet, wenn mehrere Datensätze mit identischen Dateien verknüpft sind. Der Dateiname oder Pfad kann sich dabei unterscheiden, ausschlaggebend ist der Dateihash, welcher sich aus dem Dateiinhalt ergibt.
- Wählen Sie den Menübefehl Dubletten suchen.
- Falls Sie die Meldung erhalten, dass der Dateihash veraltet ist, müssen Sie diesen zuerst aktualisieren. Dies ist wichtig, damit die Suche (auch das unten gezeigte SQL-Skript) die korrekten Datensätze findet. Dies wird in großen Archiven lange dauern, weil alle Dokumentdateien neu eingelesen werden.
- Nach der Dublettensuche beantworten Sie die Frage „Nach Dateihash gruppieren“ bitte mit Ja. Alle Dokumente, die mehrfach vorhanden sind, werden nun in der Tabelle gruppiert.
- Sie können einzeln entscheiden, welche Datensätze Sie löschen möchten. Löschen Sie aber nicht die Datei (das ist im Bestätigungsdialog wählbar), wenn mehrere Datensätze auf dieselbe Datei verweisen. Den Dateinamen finden Sie auch in der Tabelle.
SQL für sehr viele Dubletten
In der hier behandelten Supportanfrage geht es um ein Archiv mit mehreren Zehntausend Dubletten. Manuell ist das nicht mehr machbar. Wir nutzen eine SQL-Datenbankabfrage, die alle Dubletten sucht, dabei aber den jeweils zuerst erstellten Datensatz auslässt. Grundsätzlich können dann alle Dokumentdatensätze im Suchergebnis gelöscht werden.
SQL-Skript für die Dublettensuche
SELECT *
FROM document t1
WHERE t1.filehashmd5 IS NOT NULL
AND t1.filehashmd5 <> ''
AND t1.docid NOT IN (
SELECT MIN(docid)
FROM document
WHERE filehashmd5 IS NOT NULL
AND filehashmd5 <> ''
GROUP BY filehashmd5
)
ORDER BY filehashmd5, docid;
Bei Interesse finden Sie eine Beschreibung am Ende der Seite.
Dubletten suchen und entfernen
- Melden Sie sich in Office Manager DMS als Administrator an: Menü .
- Wechseln Sie zur Menüseite und wählen Sie den Befehl .
- Kopieren Sie bitte das SQL-Skript in den Editor.

- Wählen Sie im Editor den Menübefehl und schließen Sie dann den Editor.
- Die Tabelle zeigt jetzt alle Dubletten ohne den jeweils ersten Datensatz.
- Nehmen Sie sich Zeit und überprüfen Sie, ob diese wirklich alle gelöscht werden sollen. Stellen Sie sicher, dass Sie eine aktuelle Datensicherung haben.
- Wenn Sie Dokumente löschen möchten, dann markieren Sie diese in der Tabelle und wählen i. d. R. ohne die Option Datei löschen (siehe oben).
Nachkontrolle
Dies ist insbesondere wichtig, wenn Sie auch Dateien vom Datenträger gelöscht haben. Rufen Sie den Menübefehl auf. Das DMS prüft dann für jedes Dokument, ob die verknüpfte Datei vorhanden ist.
Das Skript erklärt
Bitte zum Erweitern anlicken.
1. Die Unterabfrage
SELECT MIN(docid)
FROM document
WHERE filehashmd5 IS NOT NULL AND filehashmd5 <> ''
GROUP BY filehashmd5
gruppiert alle Dokumente nach ihrem Dateihash und sucht nur das Dokument mit dem kleinsten Schlüsselwert. Die kleinste docid bedeutet, dass dieser Datensatz zuerst erfasst wurde. Datensätze mit leerem Dateihash (also ohne Datei) werden nicht berücksichtigt, das sind beispielsweise Internetadressen und Verknüpfungen zu Verzeichnissen.
2. Die Hauptabfrage
SELECT * FROM document t1
WHERE t1.filehashmd5 IS NOT NULL
AND t1.filehashmd5 <> ''
AND t1.docid NOT IN (
sucht alle Datensätze, die nicht in der Unterabfrage enthalten sind. Dort ist das jeweils erste Dokument enthalten – „NOT IN“ sucht in der Hauptabfrage also alle Duplikate außer dem jeweils ersten. Zusätzlich werden auch hier die Datensätze ohne Dateihash ausgelassen.
3. Die Sortierung
GROUP BY filehashmd5
zeigt alle Dubletten direkt untereinander.

Eigenen Kommentar schreiben oder eine Rückfrage stellen