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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 导出 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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
前端开发 JavaScript
表格插件-bootstrap table的表内查看编辑删除
表格插件-bootstrap table的表内查看编辑删除
116 0
|
2月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
115 6
|
7月前
|
XML Java BI
​ 文件导出
​ 文件导出
49 1
ant Table表格的一些常用的小功能以及常见的报错解决方法
ant Table表格的一些常用的小功能以及常见的报错解决方法
108 0
|
JavaScript
【ES6】模块化语法(默认、按需导入import导出export的操作)
ES6模块化语法(默认、按需导入导出的操作)
【ES6】模块化语法(默认、按需导入import导出export的操作)
|
分布式计算 Hadoop 关系型数据库
导出 Export--更新模式导出(Insert)--Updateonly | 学习笔记
快速学习 导出 Export--更新模式导出(Insert)--Updateonly
184 0
导出 Export--更新模式导出(Insert)--Updateonly | 学习笔记
|
存储 机器学习/深度学习 分布式计算
导出 Export--默认模式导出(Insert)--配置参数 | 学习笔记
快速学习 导出 Export--默认模式导出(Insert)--配置参数
352 0
导出 Export--默认模式导出(Insert)--配置参数 | 学习笔记
|
存储 SQL 分布式计算
导出 Export--默认模式导出(Insert)| 学习笔记
快速学习 导出 Export--默认模式导出(Insert)
224 0
导出 Export--默认模式导出(Insert)| 学习笔记
|
分布式计算 Hadoop 关系型数据库
导入 Import--增量导入--Append 模式 | 学习笔记
快速学习 导入 Import--增量导入--Append 模式
356 0
导入 Import--增量导入--Append 模式 | 学习笔记
|
分布式计算 关系型数据库 MySQL
导入 Import--增量导入--Lastmodified 模式(Merge key 合并数据) | 学习笔记
快速学习 导入 Import--增量导入--Lastmodified 模式(Merge key 合并数据)
220 0
导入 Import--增量导入--Lastmodified 模式(Merge key 合并数据) | 学习笔记