导出 Export--更新模式导出(Insert)--Allowinsert | 学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习 导出 Export--更新模式导出(Insert)--Allowinsert

开发者学堂课程【Sqoop 企业级大数据迁移方案实战导出 Export--更新模式导出(Insert)--Allowinsert】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/718/detail/12844


导出 Export--更新模式导出(Insert)--Allowinsert


更新模式导出(Insert)--Allowinsert

本节学习更新导出中的 Allowinsert 模式。在这种模式下的导出变得更加丰富。如果已有的数据发生变化更改,它会更改已有的数据,另外一点如果有新的进度产生,也会插入新的数据,在该模式下底层是 insert&update 两种操作,更新已经存在的数据、插入没有的数据。

1.参数说明

--update-key,更新标识,即根据某个字段进行更新,例如 id,可以指定多个更新标识的字段,多个字段之间用逗号分隔。

--updatemod,指定 allowinsert,更新已存在的数据记录,同时插入新记录。实质上是一个 insert&update 的操作。

2.准备 HDFS 数据

在 HDFS“/allowinsert_1/"目录下创建一个文件 allowinsert_1.txt:

打开服务器,输入:hadoop fs -mkdir /allowinsert_1/

接着编辑文件 allowinsert_1.txt,输入

vim allowinsert_1.txt

进入后复制粘贴

1201,gopal,manager,50000

1202,manisha,preader,50000

1203,kalil,php dev30000

进行保存。

3.手动创建 mysql 中的目标表

打开 Navicat,复制粘贴如下代码:

mysql>USE userdb;

mysql>CREATE TABLE allowinsert(

id INT NOT NULL PRIMARY KEY

name VARCHAR(20),

deg VARCHAR(20),

salary INT);

选中语句后点击运行已选择的。然后刷新表,可以看到表列表中多出 allowinsert,现在该表中没有数据。

4.先执行全部导出操作

该操作与更新导出没有关系,只是将 allowinsert_1.txt中的记录插入表中

打开 sqoop,复制粘贴如下代码:

bin/sqoop export\

--connect jdbc:mysql://node-1:3306/userdb\

--username root\

-password hadoop \

--table allowinsert\

--export-dir /allowinsert_1/

5.更新导出操作

打开服务器,在全部导出操作完成后输入 hadoop fs -mkdir /allowinsert_2/

创建 allowinsert_2.txt。修改了前三条数据并且新增了一条记录。上传至/allowinsert_2/目录下

输入:vim allowinsert_2.txt

进入后复制粘贴如下代码:

1201,gopal,manager,1212  //修改了薪水,新增一条记录

1202,manisha,preader,1313

1203,kalil,php dev,1414

1204,allen,java,1515

保存后退出,输入 hadoop fs -put allowinsert_2.txt /allowinsert_2/

完成后刷新页面可以看到多出 allowinsert_2数据:

image.png

6.执行更新导出

打开服务器,输入如下代码:

bin/sqoop export\

--connect jdbc:mysql://node-1:3306/userdb\

--username root

--password hadoop\

--table allowinsert\

--export-dir /allowinsert_2/\

--update-key id\

--update-mode allowinsert

验证是否三条数据中的薪水进行 update,如果出现1204说明 insert 进行了更新,满足两个条件则为 Allowinsert 模式。

结果显示导入4条记录。在数据库中进行刷新查看:

image.png

发现表中前三条记录的 salary 发生修改,最后一条记录1204被插入。

在实际生活中可以根据应用需求选择相关的模式,例如一个表中的数据一直发生变化,只新增选用 Allowinsert 更加友好。因为它的底层既有插入操作又有更新操作。

小结:

更新导出

updateonly 只更新已经存在的数据,不会执行 insert 增加新的数据

allowinsert 更新已有的数据,插入新的数据,底层相当于 insert&update

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
SQL 缓存 分布式计算
54 Hive的Join操作
54 Hive的Join操作
334 0
|
SQL 存储 分布式计算
【Hive】(二十三)简单几招教你如何解决 Hive 中小文件过多的问题
【Hive】(二十三)简单几招教你如何解决 Hive 中小文件过多的问题
1991 0
|
算法 数据处理 数据库
生物学经典Blast序列比对算法原理,如何在R语言和Python中实现序列的比对分析?
生物学经典Blast序列比对算法原理,如何在R语言和Python中实现序列的比对分析?
|
SQL 存储 安全
DDL、DML、DCL 的区别
【8月更文挑战第1天】
1241 0
DDL、DML、DCL 的区别
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之如何修改字段类型
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
245 2
|
SQL 存储 Java
Hive 特殊的数据类型 Array、Map、Struct
在Hive中,`Array`、`Map`和`Struct`是三种特殊的数据类型。`Array`用于存储相同类型的列表,如`select array(1, "1", 2, 3, 4, 5)`会产生一个整数数组。`Map`是键值对集合,键值类型需一致,如`select map(1, 2, 3, "4")`会产生一个整数到整数的映射。`Struct`表示结构体,有固定数量和类型的字段,如`select struct(1, 2, 3, 4)`创建一个无名结构体。这些类型支持嵌套使用,允许更复杂的结构数据存储。例如,可以创建一个包含用户结构体的数组来存储多用户信息
2484 0
|
机器学习/深度学习 算法 数据可视化
基于线性SVM的CIFAR-10图像集分类
基于线性SVM的CIFAR-10图像集分类
932 0
基于线性SVM的CIFAR-10图像集分类
|
SQL JSON Java
基于dataX实现多种数据源数据汇聚(一)
在数据中台项目实践过程中,经常需要获取多个部门、多个系统的数据,此时面临多种多样的数据库,如何快速稳定的获取数据,并持续归集到数据中台的数据仓库中,是每个数据中台项目必须解决的问题。本文介绍了我在项目实践过程中,基于dataX实现数据汇聚的一些使用心得,在此和大家分享,希望有所帮助。
2969 0
基于dataX实现多种数据源数据汇聚(一)
|
SQL 关系型数据库 PostgreSQL
sql中的substring()、to_char()、extract()、concat()等函数
日期数据类型的“substring”并没有很好的定义,因为它取决于数据的外部格式。 在大多数情况下,应该使用extract()或to_char()函数。 通常对于要返回的数据,需要to_char(),并对其进行操作(包括比较) - extract()。有些情况下,这条通用规则不适用,但这些通常是数据结构不是很好的标志。
533 0
|
SQL 存储 传感器
Hive中的分区表和非分区表有什么区别?请解释其作用和使用场景。
Hive中的分区表和非分区表有什么区别?请解释其作用和使用场景。
582 0