3 Stimmen

(Google App Engine) Bulkloader-Upload generiert neue Einträge, anstatt bestehende zu aktualisieren

Für mein Projekt verwende ich GAE-Datenspeicher zum Speichern von Daten. Für die Sicherung habe ich mich entschieden, den Bulkloader zu verwenden, der die gesamten Daten perfekt in eine csv-Datei herunterlädt. Auch der Upload lädt die Daten fehlerfrei ohne Fehler.

Mein Problem ist, dass der Upload die vorhandenen Daten nicht aktualisiert, sondern Duplikate erstellt. Hier ein Beispiel aus dem Datastore Viewer:

Vor der Aktualisierung:

ID/Name 
id=18000
id=20001 

Nach der Aktualisierung:

ID/Name
id=18000
id=20001
name=18000
name=20001 

In der Datenspeicherentität verwende ich diese als Daten-ID:

@PrimaryKey 
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
private Long id; 

Haben Sie eine Idee, wie ich bestehende Daten mit dem Bulkloader aktualisieren kann?

Danke, Adam

3voto

Calvin Punkte 4147

Die Standardeinstellungen von Bulkloader haben die unangenehme Angewohnheit, die Wertetypen zu zerstören. Dies ist insbesondere ein Problem für Schlüssel und Listen.

Ich verwende diese Hilfsfunktionen Bulk_Helfer und füge dies zu meiner bulkloader.yaml hinzu:

python_preamble:
- import: bulk_helper
...

property_map:
  - property: __key__
    external_name: key
    import_transform: bulk_helper.reverse_str_to_key
    export_transform: bulk_helper.key_to_reverse_str

Dadurch bleibt der vollständige Schlüssel erhalten, einschließlich der Informationen zu Art und Elternteil, und er bleibt für Menschen lesbar (falls das für Sie wichtig ist).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X