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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习 导出 Export--更新模式导出(Insert)--Updateonly

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

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


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


更新模式导出 Updateonly

本节学习更新导出模式 Updateonly,只进行数据的更新,当数据发生变化的时候,只会将已有的数据、已经存在的数据、发生变化的数据进行更改。对于新增加的数据并不会进行修改。

1.参数说明

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

--updatemod,指定updateonly(默认模式),仅仅更新已存在的数据记录,不会插入新纪录。

2. 准备 HDFS 数据

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

1201,gopal,manager,50000  //编号、名字、职位、薪水

1202,manisha,preader,50000

1203,kalil,php dev,30000

演示:

打开服务器输入 hadoop fs -mkdir /updateonly_1/

创建好文件夹后创建文件 updateonly_1.txt

输入 vim updateonly_1.txt

进入后复制粘贴代码:

1201,gopal,manager,50000    

1202,manisha,preader,50000

1203,kalil,php dev,30000

保存后退出,继续输入:hadoop fs -put updateonly_1.txt /updateonly_1/

完成后刷新页面,结果显示

image.png

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

将刚才的文件手动导出到 mysql 中的目标表中

打开 Navicat,粘贴如下代码:

mysql> USE userdb;

mysqI>CREATE TABLE updateonly(

id INT NOT NULL PRIMARY KEY

name VARCHAR(20)

deg VARCHAR(20),

salary INT);

然后选择点击运行已选择的,运行完后刷新表,可以看到列表中多出 updateonly,目前该表中没有数据。

4.先执行全部导出操作:

在 sqoop 中输入:

bin/sqoop export \

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

--username root\

--password hadoop \

--table updateonly\

--export-dir /updateonly_1/

结果报错,可以忽略:为终端异常,是虚拟机内存不足

image.png

结束后成功导出3条记录。此时打开 MySQL 再来刷新:

image.png

表中导入3条数据

5.新增一个文件 updateonly_2.txt :

修改了前三条数据并且新增了一条记录

同样先创建文件夹,打开服务器,输入

hadoop fs -mkdir /updateonly_2

接着创建文件 updateonly_2.txt,输入

vim updateonly_2.txt

进入后粘贴以下记录:修改了薪水数据并且新增一条记录1204

1201,gopal,manager,1212

1202,manisha,preader,1313

1203,kalil,php dev,1414

1204,allen,java,1515

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

此时刷新访问网页结果显示多出

image.png

6.执行更新导出:

如果符合标准只会更新已经存在的记录,不会新增加。

bin/sgoop export \

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

--username root \

--password hadoop\

--table updateonly\

-export-dir /updateonly_2 / \

--update-key id\

--update-mode updateonly

复制语句打开 sqoop 进行执行

如果过程出现问题可以查看相关日志或者容器日志来确定哪一阶段出现问题。

结果显示:出现4条记录

image.png

但是刷新表,依然是3条数据

image.png

将前三条记录中的 salary 进行修改即已有的数据有变化的发生修改,1204之前不存在不能 insert 进入。所以确实为只更新。

小结:

更新导出

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
116 0
|
6月前
|
XML Java BI
​ 文件导出
​ 文件导出
41 1
ant Table表格的一些常用的小功能以及常见的报错解决方法
ant Table表格的一些常用的小功能以及常见的报错解决方法
98 0
|
JavaScript
【ES6】模块化语法(默认、按需导入import导出export的操作)
ES6模块化语法(默认、按需导入导出的操作)
【ES6】模块化语法(默认、按需导入import导出export的操作)
|
分布式计算 Hadoop 关系型数据库
导出 Export--更新模式导出(Insert)--Allowinsert | 学习笔记
快速学习 导出 Export--更新模式导出(Insert)--Allowinsert
188 0
导出 Export--更新模式导出(Insert)--Allowinsert | 学习笔记
|
存储 SQL 分布式计算
导出 Export--默认模式导出(Insert)| 学习笔记
快速学习 导出 Export--默认模式导出(Insert)
212 0
导出 Export--默认模式导出(Insert)| 学习笔记
|
存储 机器学习/深度学习 分布式计算
导出 Export--默认模式导出(Insert)--配置参数 | 学习笔记
快速学习 导出 Export--默认模式导出(Insert)--配置参数
335 0
导出 Export--默认模式导出(Insert)--配置参数 | 学习笔记
|
分布式计算 Hadoop 关系型数据库
导入 Import--增量导入--Append 模式 | 学习笔记
快速学习 导入 Import--增量导入--Append 模式
344 0
导入 Import--增量导入--Append 模式 | 学习笔记
|
分布式计算 Java 关系型数据库
导入 Import--增量导入--Lastmodified 模式(附加数据)| 学习笔记
快速学习 导入 Import--增量导入--Lastmodified 模式(附加数据)
123 0
|
SQL 分布式计算 Hadoop
Apache Hive--DDL--修改表&显示命令| 学习笔记
快速学习 Apache Hive--DDL--修改表&显示命令
103 0
Apache Hive--DDL--修改表&显示命令| 学习笔记