Zum Inhalt springen

Durchführung eines Bulk-Upsert in eine Datenbank in Jitterbit Studio

Einführung

Eine Datenbank-Upsert-Aktivität schreibt Datensätze in eine Datenbank, indem sie neue einfügt und vorhandene in einem einzigen Durchgang aktualisiert, basierend auf einem oder mehreren von Ihnen angegebenen Schlüsselfeldern. Da der Vorgang beide Fälle zusammen behandelt, kann er wiederholt gegen denselben Datensatz ausgeführt werden, ohne Duplikate zu erstellen. Dies macht ihn zur richtigen Wahl für sowohl erste Datenmigration als auch laufende Synchronisierungsvorgänge.

Wenn Sie nur neue Datensätze einfügen müssen, verwenden Sie stattdessen eine Database-Insert-Aktivität. Wenn Sie nur vorhandene Datensätze aktualisieren müssen, verwenden Sie eine Database-Update-Aktivität.

Für große Datenmengen unterstützt Studio Chunking: Jeder Datensätze-Chunk wird in die Datenbank übertragen, sobald er verfügbar ist, anstatt auf die Verarbeitung aller Datensätze zu warten. Dies reduziert die Speichernutzung und kann den Durchsatz erheblich verbessern. Chunking wird in Teil 3 behandelt.

Diese Anleitung setzt voraus, dass eine Datenbankverbindung bereits im Projekt konfiguriert ist.

Designmuster

Die Upsert-Aktivität folgt dem Transformationsmuster:

%%{init: {"themeVariables": {"lineColor": "#6b7280", "edgeLabelBackground": "#f5f5f5"}}}%% flowchart LR A[Source activity] --> B[Transformation] --> C[Database Upsert activity]

Teil 1: Konfigurieren Sie die Database-Upsert-Aktivität

Schritt 1: Benennen Sie die Aktivität und wählen Sie eine Tabelle

  1. Ziehen Sie auf der Designoberfläche eine Upsert-Aktivität aus einer vorhandenen Datenbankverbindung auf die Oberfläche.

  2. Doppelklicken Sie auf die Aktivität, um ihre Konfiguration zu öffnen.

  3. Name: Geben Sie einen aussagekräftigen Namen ein, z. B. Upsert Contacts.

  4. Klicken Sie auf das Aktualisierungssymbol, um verfügbare Tabellen zu laden. Verwenden Sie bei Datenbanken mit einer großen Anzahl von Tabellen das Dropdown-Feld View, um nach Typ zu filtern, oder geben Sie einen Suchbegriff in das Feld Search ein, bevor Sie aktualisieren.

  5. Klicken Sie in der Liste Provide the table names reference auf die Zieltabelle, um sie auszuwählen. Die ausgewählte Tabelle wird im rechten Bereich angezeigt.

  6. Allow truncation of character fields to avoid field length errors: Lassen Sie dieses Kontrollkästchen deaktiviert, wenn Feldlängenkonflikte als Fehler angezeigt werden sollen. Wenn es deaktiviert ist und übergroße Daten ankommen, gibt der Vorgang einen Error-Status zurück. Wenn es aktiviert ist, gibt der Vorgang Success with Info zurück und die Vorgangsprotokolle zeigen an, dass ein oder mehrere Werte gekürzt wurden.

  7. Include the schema/owner in the table names: Aktivieren Sie dieses Kontrollkästchen, wenn derselbe Tabellenname in mehr als einem Schema vorhanden ist, damit Studio zwischen ihnen unterscheiden kann.

  8. Klicken Sie auf Next.

Schritt 2: Wählen Sie Upsert-Schlüssel

  1. Aktivieren Sie im Bereich Select keys das Kontrollkästchen für jedes Feld, das einen vorhandenen Datensatz eindeutig identifiziert.

    Tipp

    Verwenden Sie einen natürlichen Business-Schlüssel (z. B. ein email-Feld oder ein vom Quellsystem zugewiesenes Feld external_id), anstatt eines von der Datenbank generierten Primärschlüssels. Ein generierter Schlüssel ist erst nach dem ersten Einfügen bekannt, daher kann er nicht zum Abgleichen von Datensätzen bei nachfolgenden Ausführungen verwendet werden.

    Die ausgewählten Felder werden im rechten Bereich als aktive Upsert-Schlüssel angezeigt.

  2. Klicken Sie auf Next.

Schritt 3: Überprüfen Sie das Datenschema

  1. Überprüfen Sie das Zieldatenschema. Dieses Schema wird in der Transformation in Teil 2 verwendet.

  2. Klicken Sie auf Finished.

Teil 2: Ordnen Sie die Transformation

  1. Fügen Sie auf der Designoberfläche einen Transformation-Schritt zwischen der Quellaktivität und der Datenbank-Upsert-Aktivität hinzu.

  2. Öffnen Sie die Transformation. Das Quellschema wird auf der linken Seite angezeigt und das Upsert-Zielschema auf der rechten Seite.

  3. Wenn das Zielschema direkt aus einer Single-Table-Aktivität vom Typ Upsert gespiegelt wird, enthält das Ziel einen row-Knoten direkt unter dem Root. Studio behandelt diesen Knoten automatisch als Loop-Knoten, sodass jeder Datensatz der Quelle eine Upsert-Zeile in der Datenbank erzeugt.

  4. Ordnen Sie die Quellenfelder den entsprechenden Zielfeldern unter dem row-Knoten zu.

    Hinweis

    Bei Multi-Table-(Join-)Zielen werden die Werte der Joined-Felder einer untergeordneten Tabelle standardmäßig auf die entsprechenden Feldwerte der übergeordneten Tabelle gesetzt. Joined-Felder untergeordneter Tabellen können in der Transformation nicht direkt zugeordnet werden.

Einen vollständigen Überblick über die Transformationszuordnung finden Sie unter Transformation-Mapping-Übersicht.

Teil 3: Leistung für große Datenmengen verbessern

Standardmäßig sammelt Studio alle verarbeiteten Datensätze und schreibt sie in einer einzelnen Operation in die Datenbank. Bei großen Datenmengen bewirkt das Aktivieren von Chunking, dass jeder Chunk geschrieben wird, sobald er verfügbar ist. Dies reduziert die maximale Speichernutzung und kann den Durchsatz erheblich verbessern.

Um Chunking zu aktivieren, setzen Sie die Jitterbit-Variable jitterbit.target.db.commit_chunks auf true oder 1. Führen Sie dies in einem Skript-Schritt aus, der vor der Upsert-Operation ausgeführt wird, oder konfigurieren Sie es direkt in den Betriebseinstellungen.

So setzen Sie dies in einem Skript:

$jitterbit.target.db.commit_chunks = true;

Informationen zum Konfigurieren der Chunk-Größe und zum Aktivieren von Chunking über die Benutzeroberfläche der Betriebseinstellungen finden Sie unter Betriebsoptionen.

Hinweis

Wenn Chunking aktiviert ist, wird jeder Chunk vor dem Schreiben in die Datenbank in eine temporäre Datei geschrieben. Stellen Sie sicher, dass der Agent über ausreichend Speicherplatz für die temporären Dateien verfügt, wenn sehr große Datenmengen verarbeitet werden.

Integration überprüfen

Stellen Sie bereit und führen aus die Operation aus. Überprüfen Sie die Betriebsprotokolle, um zu bestätigen, dass die Upsert-Aktivität erfolgreich abgeschlossen wurde, und überprüfen Sie, ob die Datensatzanzahl in der Datenbank dem erwarteten Gesamtwert aus der Quelle entspricht.

Wenn die Operation aufgrund von Feldlängenkonflikten den Status Fehler zurückgibt, wählen Sie entweder Abschneiden von Zeichenfeldern zulassen in der Aktivitätskonfiguration (Schritt 1) aus, oder verwenden Sie String-Funktionen, um Werte in der Transformation zu kürzen, bevor sie das Ziel erreichen.