使用更新和更新插入方法的SQOOM导出

时间:2020-02-23 14:33:37  来源:igfitidea点击:

使用插入模式,由SQOOP导出的记录将添加到目标表的末尾。
SQOOP还提供了通过提供更新键<列>命令行参数来使用的更新模式。
此操作会导致SQOP生成SQL UPDATE语句以在RDBMS或者数据仓库上运行。

假设我们要更新三列表,其中包含存储在HDFS文件/用户/my-hdfs文件中的数据。
该文件包含此数据:

100, 1000, 2000

以下缩写的SQOOM导出命令在数据库系统上生成相应的SQL UPDATE语句:

$sqoop export (Generic Arguments)
  --table target-relational-table 
  --update-key column1
  --export-dir /user/my-hdfs-file
  ...
Generates => UPDATE target-relational-table SET
                    column2=1000,column3=2000 
             WHERE column1=100;

使用前一个导出命令,如果RDBMS或者Data Warehouse系统上的目标关系表在第1列中没有匹配值的记录,则目标关系表中的任何内容都不会更改。

但是,如果未找到匹配记录,我们还可能包含另一个参数或者将数据插入到目标表中。
以这种方式想到:如果存在更新eless。

该技术通常被称为数据库中的逆端,或者在其他实现中的合并。
Upsert模式的参数是更新 - 模式<mode>,其中默认和allowinsert激活Upsert模式。
检查数据库文档或者咨询Vender以确定Apache SQOOP是否支持UPSERT模式。