使用更新和更新插入方法的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模式。