Video: 24 Apache Sqoop - Sqoop Export - Update and upsert/merge 2024
Beim Einfügemodus werden die von Sqoop exportierten Datensätze an das Ende der Zieltabelle angehängt. Sqoop bietet außerdem einen Aktualisierungsmodus, den Sie verwenden können, indem Sie das Befehlszeilenargument -update-key angeben. Diese Aktion bewirkt, dass Sqoop eine SQL UPDATE-Anweisung generiert, die im RDBMS oder Data Warehouse ausgeführt wird.
Angenommen, Sie möchten eine dreispaltige Tabelle mit Daten aktualisieren, die in der HDFS-Datei / user / my-hdfs-Datei gespeichert sind. Die Datei enthält diese Daten:
100, 1000, 2000
Der folgende abgekürzte Exportbefehl Sqoop generiert die entsprechende SQL UPDATE-Anweisung in Ihrem Datenbanksystem:
$ sqoop export (Generische Argumente) --table target-relational -table --update-key Spalte1 --export-dir / user / my-hdfs-Datei … Generiert => UPDATE Ziel-relationale Tabelle SET Spalte2 = 1000, Spalte3 = 2000 WHERE Spalte1 = 100;
Mit dem vorhergehenden Exportbefehl wird nichts in target-relational-table geändert, wenn die relationale Zieltabelle in Ihrem RDBMS oder Data Warehouse-System keinen Datensatz mit dem übereinstimmenden Wert in column1 hat.
Sie können jedoch auch ein anderes Argument angeben, das Ihre Daten in die Zieltabelle einfügt oder anfügt, wenn keine übereinstimmenden Datensätze gefunden werden. Betrachten Sie es so: Wenn existiert UPDATE else INSERT.
Diese Technik wird oft als upsert in der Datenbank-Muttersprache oder als MERGE in anderen Implementierungen bezeichnet. Das Argument für den Upsert-Modus ist -update-mode, wobei updateonly der Standardwert ist und allowinsert den upsert-Modus aktiviert. Überprüfen Sie Ihre Datenbankdokumentation oder wenden Sie sich an Ihren Anbieter, um festzustellen, ob der Upsert-Modus mit Apache Sqoop unterstützt wird.