Vidéo: Sqoop Import and Export data from RDMBS and HDFS 2024
Avec le mode Insertion, les enregistrements exportés par Sqoop sont ajoutés à la fin de la table cible. Sqoop fournit également un mode de mise à jour que vous pouvez utiliser en fournissant l'argument de ligne de commande -update-key. Cette action permet à Sqoop de générer une instruction SQL UPDATE à exécuter sur le SGBDR ou l'entrepôt de données.
Supposons que vous souhaitiez mettre à jour une table à trois colonnes avec des données stockées dans le fichier HDFS / user / mon-hdfs-fichier. Le fichier contient ces données:
100, 1000, 2000
La commande d'exportation Sqoop abrégée suivante génère l'instruction SQL UPDATE correspondante sur votre système de base de données:
$ sqoop export (Arguments génériques) --table cible-relationnelle -table --update-key colonne1 --export-dir / utilisateur / mon-fichier-hdfs … Génère => UPDATE cible-table-relationnelle SET colonne2 = 1000, colonne3 = 2000 WHERE colonne1 = 100;
Avec la commande d'exportation précédente, si la table cible-relationnelle de votre système SGBDR ou entrepôt de données n'a pas d'enregistrement avec la valeur correspondante dans la colonne1, rien n'est changé dans la table cible-relationnelle.
Cependant, vous pouvez également inclure un autre argument qui insère ou ajoute vos données à la table cible si aucun enregistrement correspondant n'est trouvé. Pensez-y de cette façon: Si existe UPDATE else INSERT.
Cette technique est souvent appelée upsert dans la base de données vernaculaire ou comme MERGE dans d'autres implémentations. L'argument pour le mode upsert est -update-mode, où updateonly est la valeur par défaut et allowinsert active le mode upsert. Vérifiez la documentation de votre base de données ou consultez votre fournisseur pour déterminer si le mode upsert est pris en charge avec Apache Sqoop.