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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
SAP UI5 表格数据如何导出成 Excel 文件(Table Export As Excel)
本教程前一步骤,我们在介绍 SAP UI5 SmartTable 时,提到了它的 Excel 导出功能。如果将 iseExportToExcel 设置为 true,就可以启用 Excel 导出功能,将 Table 控件显示的数据,导出成本地 Excel 文件。
57 0
|
10月前
ant Table表格的一些常用的小功能以及常见的报错解决方法
ant Table表格的一些常用的小功能以及常见的报错解决方法
45 0
|
JavaScript
【ES6】模块化语法(默认、按需导入import导出export的操作)
ES6模块化语法(默认、按需导入导出的操作)
【ES6】模块化语法(默认、按需导入import导出export的操作)
|
分布式计算 Hadoop 关系型数据库
导出 Export--更新模式导出(Insert)--Updateonly | 学习笔记
快速学习 导出 Export--更新模式导出(Insert)--Updateonly
140 0
导出 Export--更新模式导出(Insert)--Updateonly | 学习笔记
|
存储 机器学习/深度学习 分布式计算
导出 Export--默认模式导出(Insert)--配置参数 | 学习笔记
快速学习 导出 Export--默认模式导出(Insert)--配置参数
265 0
导出 Export--默认模式导出(Insert)--配置参数 | 学习笔记
|
存储 SQL 分布式计算
导出 Export--默认模式导出(Insert)| 学习笔记
快速学习 导出 Export--默认模式导出(Insert)
171 0
导出 Export--默认模式导出(Insert)| 学习笔记
|
分布式计算 Hadoop 关系型数据库
导入 Import--增量导入--Append 模式 | 学习笔记
快速学习 导入 Import--增量导入--Append 模式
260 0
导入 Import--增量导入--Append 模式 | 学习笔记
|
分布式计算 Java 关系型数据库
导入 Import--增量导入--Lastmodified 模式(附加数据)| 学习笔记
快速学习 导入 Import--增量导入--Lastmodified 模式(附加数据)
93 0
|
SQL 关系型数据库 MySQL
一键导出PostgreSQL数据库表设计为word文档
项目开始时,数据库表设计是从概要设计到详细设计,再到数据库中的表结构,有一套完整的文档
991 0
一键导出PostgreSQL数据库表设计为word文档
|
SQL Oracle 关系型数据库
实战篇:LogMiner 分析数据泵导入参数 TABLE_EXISTS_ACTION 的秘密
前几天,技术交流群里看到大家讨论 Oracle 数据泵导入时使用 table_exists_action 参数,存在一些疑惑。于是,我打算通过 LogMiner 来分析一下在线重做日志,看看到底是怎么玩的。
实战篇:LogMiner 分析数据泵导入参数 TABLE_EXISTS_ACTION 的秘密