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

简介: 快速学习 导出 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 增加新的数据

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储
uniApp监听左右滑动事件
uniApp监听左右滑动事件
1151 0
|
云安全 存储 安全
云服务提供商的安全实践:构建可信赖的AWS、Azure和GCP云环境
本篇详细探讨了三家主要云服务提供商,即Amazon Web Services(AWS)、Microsoft Azure和Google Cloud Platform(GCP)的安全实践。我们介绍了每个平台的关键安全功能和工具,以帮助读者构建可信赖的云环境。
600 1
云服务提供商的安全实践:构建可信赖的AWS、Azure和GCP云环境
|
存储 缓存 监控
怎么更好地设计一个优秀的SaaS系统
设计一个优秀的SaaS系统,需要从架构、性能、安全性、租户隔离、扩展性等多方面进行深思熟虑。根据业务需求选择合适的多租户架构,保证数据隔离的同时提高系统性能。
973 1
|
SQL 存储 分布式计算
插入Hive表数据SQL
【8月更文挑战第10天】
647 4
|
SQL 关系型数据库 MySQL
如何在 SQL Server 中使用 `REPLACE` 函数
【8月更文挑战第8天】
2460 9
Python删除 字符串中的\的方法
这篇文章介绍了如何在Python中使用`replace`方法删除字符串中的特定字符,如制表符(`\t`)、空格(` `)以及其他指定字符,同时指出这种方法返回的是新字符串,不会改变原始字符串。
|
缓存 并行计算 Ubuntu
在Ubuntu系统下部署大语言模型
在Ubuntu系统下部署大语言模型
941 0
|
PyTorch 算法框架/工具
在conda中如何查看安装的pytorch版本 - 蓝易云
这个命令会列出所有与pytorch相关的包,包括它们的版本号。你可以在列表中找到pytorch的版本号。
1544 1
|
SQL 分布式计算 Java
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
767 1
|
Ubuntu Linux Shell
Android-NDK-clang 编译 FFmpeg
Android-NDK-clang 编译 FFmpeg
769 0