Ich arbeite an einem Solr dataimport
aus einer Oracle-Datenbank. Das Datenbanksystem verfügt über eine Reihe von Tabellen, in denen Verweise auf Änderungen in anderen Tabellen gespeichert werden. Zum Beispiel könnte ich eine Tabelle mit dem Namen PERSON
haben, und wenn Datensätze zu dieser Tabelle hinzugefügt werden, werden ihre IDs der PERSON_CHANGED
Tabelle hinzugefügt. Ich möchte diese Tabelle PERSON_CHANGED
bei der Definition meiner deltaQuery
verwenden, so dass Solr nur die geänderten Datensätze in nachfolgenden Indizes indiziert. Als Teil dieses Prozesses muss ich die Datensätze, die ich aus der Tabelle PERSON_CHANGED
gelesen habe, entfernen, nachdem Solr den Import beendet hat (entweder Delta oder Voll), damit ich sie später nicht mehr verarbeiten kann.Führen Sie DELETE Bereinigungsabfrage nach einem Solr-Datenimport
Was ist der beste Weg, um diese Art von "Bereinigung" SQL-Abfrage nach einem dataimport
auszuführen?
Ich habe versucht, sowohl die Abfragen wie folgt kombiniert (der Kürze halber vereinfacht):
<dataConfig>
<dataSource ... >
<document>
<entity name="person"
query="
SELECT ID, FIRST_NAME, LAST_NAME
FROM PERSON
WHERE '${dataimporter.request.clean}' != 'false'
OR PERSON_ID IN (
SELECT ID FROM CHANGED_PERSON
);
DELETE * (
SELECT * FROM CHANGED_PERSON
);
" />
</document>
</dataConfig>
Aber dies führt zu einem SQL command not properly ended
Fehler. Bietet Solr eine Möglichkeit, diese Art der Säuberung durchzuführen?
Hallo, was ist deine SOLR-Version? – jeorfevre
@jeorfevre - Ich benutze Solr 6.5.1. –
Ihre Delete-Anweisung gibt nicht an, welche Tabelle zum Löschen verwendet wird, DELETE-Person, wo person_id in ( SELECT ID VON CHANGED_PERSON); –