背景知识
云数据库RDS
阿里云关系型数据库RDS(Relational Database Service)是一种安全稳定可靠、高性价比、可弹性伸缩的在线数据库服务。RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,帮助您解决数据库运维的烦恼。
本次实验使用的是RDS for MySQL。
完成开通后通过右侧进入控制台
可对创建的实例进行管理
数据管理DMS
数据管理DMS(Data Management)是一款支撑数据全生命周期的一站式数据管理平台。DMS提供全域数据资产管理、数据治理、数据库设计开发、数据集成、数据开发和数据消费等功能,致力于帮助企业高效、安全地挖掘数据价值,助力企业数字化转型。
产品地址:https://www.aliyun.com/product/dms?spm=5176.28446652.J_4VYgf18xNlTAyFFbOuOQe.58.290e5526tSRIcX
产品优势:
产品使用及教程:https://help.aliyun.com/zh/dms/
场景描述
我们平时会将一些结构化的数据放在Excel表格中进行存储,但当数据量达到一定规模,在进行复杂的关联查询时,Excel运行起来就不太友好,这时我们可以选择将Excel中的数据导入到数据库中进行处理,以提高数据存取的效率。本次实验将带领您,把Excel的数据通过数据管理服务DMS(Data Management Service)导入到RDS MySQL数据库中。
实验流程
实验开始,需要创建一个RDS for MySQL的实例,再创建数据库和账号,通过DMS对该实例进行接管,DMS拥有MySQL客户端的功能,可以在SQL窗口进行创建存储Excel数据的表,然后通过DMS的数据导入功能将Excel表格数据导入RDS数据库中。最后,会带领大家操作ECS连接RDS实例,并通过命令行,做一些简单的增删改查的操作。
Excel文件转存到RDS数据库
搜索框搜索RDS,点击搜索结果中的云数据库RDS,进入RDS管理控制台。
点击创建实例的按钮,进入实例创建页面。
进入实例创建页面后,进行创建实例。
选择对应的参数进行配置实例,参数选择如下所示:
配置完成后点击确认,进入实例配置页面,在实例描述框中填写rdstest ,其他配置按照默认即可。
确认订单页面,选择去支付。
进入RDS实例管理界面。
实例创建过程耗时3分钟左右,若实例ID暂不可跳转,请耐心等待,过程中可以刷新页面,等待实例状态变为运行中,单击实例ID 。
在账号管理界面,单击创建账号,创建 高权限账号,账号为aliyuntest,密码自己设置。
显示账号已激活 ,账号已创建完成。若一直处于创建中,请手动刷新页面。
点击数据库管理,在点击创建数据库,在页面中输入数据库(DB)名称,选择支持字符集 ,并书写对应的备注说明,点击创建按钮,进行提交。
MySQL8.0支持多种字符集,字符集的特点如下:
utf8mb4:支持4字节Unicode字符,可以表示大部分国家的字符,是现代web应用中广泛使用的字符集。
utf8:只支持3字节Unicode字符,较老的MySQL服务器和许多库如LAMP(Linux + Apache + MySQL + Python/PHP/Perl)默认采用该字符集。
latin1:最基本的字符集,其它的字符集都可以通过该字符集的不可改变子集表示。这个字符集支持大部分计算机常见的字符,包括所有西欧语言的字母、数字、标点符号以及一些特殊字符。它在日语、中文和俄语等非拉丁字母语言中不适用。
gb2312:早期中国字符集,支持除异体字之外的3500左右的中文汉字和基本的拉丁字母、数字、标点符号,以及一些特殊字符。
gbk:统一汉字编码,是中国的现代字符集,包含了中国国家标准GB 2312-1980的全部字符,支持包括繁体字、日本汉字和韩国汉字等在内的多种汉字。
utf16:Unicode字符二进制编码的16位配对码,支持几乎所有语言的字符和符号。
总之,选择什么字符集要根据自己的实际情况进行综合考虑,例如需要支持哪些语言、字符等。utf8mb4通常是最好的选择,如果面临扩展部署考虑,则可考虑 utf16的使用,中文网站中,唯一建议不适用latin字符集。
显示如下界面,表示数据库已创建完成。
在左侧导航栏中,单击白名单与安全组。
单击default分组右侧的修改。全部开放:将0.0.0.0/0加入白名单中,点击确定。
白名单说明:
多个IP地址用英文逗号隔开,且逗号前后不能有空格。
单个实例最多添加1000个IP地址或IP段。如果IP地址较多,建议将零散的IP合并为IP段,例如10.10.10.0/24。
如果第3步获取的白名单模式是通用模式,则无额外注意事项。如果是高安全模式,需注意:
把公网IP或经典网络ECS实例私网IP添加至经典网络分组。
把专有网络ECS实例私网IP添加至专有网络分组。
添加后,所有的应用服务器都能访问RDS实例。
在实例基本信息页面上单击 登录数据库 ,跳转DMS界面。
在DMS界面,输入创建的 数据库账号 、 数据库密码。
完成以上信息填写后,单击左下角的测试链接,测试连通性无问题后,点击 登录。
在DMS控制台,单击 首页,点击常用功能,选择SQL窗口,进入SQL执行窗口。
将以下SQL复制到SQL窗口,创建goods表,用于存储Excel表格中的数据。
CREATE TABLE `goods` (
`id` bigint(20) NOT NULL COMMENT '书籍编号',
`name` varchar(32) NOT NULL COMMENT '书籍名称',
`price` decimal(10,0) NOT NULL COMMENT '单价',
`stock` int(10) unsigned NOT NULL COMMENT '库存',
`author` varchar(128) DEFAULT NULL COMMENT '作者',
`publishing_house` varchar(32) DEFAULT NULL COMMENT '出版社',
`publishing_date` date DEFAULT NULL COMMENT '出版日期',
`type` varchar(16) DEFAULT NULL COMMENT '类型',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品信息';
单击执行 ,页面返回执行成功标志,消息通知执行成功。
可点击刷新按钮,将会出现新创建的goods表。
将已准备好的Excel表格数据,通过OSS的bucket地址进行下载到公共资源中。
数据导入。在DMS控制台上,选择常用功能--->数据导入。
单击上传文件,将商品管理文件进行上传。
预检查阶段,需显示全部通过,单击执行变更。
单击确定执行。
界面显示执行成功,即为文件上传成功。
再回到SQL窗口,选择数据库,单击确认,进行连接数据库。
打开新的SQL窗口。
SQL窗口中,输入SQL,单击执行,查询goods表中的全量数据。
select * FROM `goods`;
查询出的数据为全量的数据,与Excel表格中的数据进行对比,可发现数据一致。
SQL窗口中,点击+号,新增SQL执行窗口,输入SQL,单击执行,在goods表中查询teye字段为‘计算机’类型的数据。
select * FROM `goods` WHERE type='计算机';
接下来通过ECS连接数据库,需要输入MySQL的命令行进行连接。
【说明】 mysql -h 主机名 -u 用户名 -p 密码 -P 端口 。
-h : 该命令用于指定客户端所要登录的MySQL主机名。
-u : 所要登录的用户名。
-p : 告诉服务器将会使用一个密码来登录。
-P:一般默认为3306。
开通外网地址,点击实例功能栏左侧数据库连接,点击开通外网地址。
开通外网地址以后,将外网地址进行复制,后续步骤会进行使用该地址。
打开ECS远程连接,输入如下命令链接数据库:
mysql -h 数据库外网地址 -P3306 -u aliyuntest -p
输入密码,不回显是正常现象,如下所示即登录成功
执行如下SQL语句,查看所有数据库。
show databases;
返回结果如下,您可查看到MySQL数据库中的数据库,其中commodity数据库是之前创建数据库的步骤中创建好的,后续实验所有操作都在commodity数据库中执行。
执行如下SQL语句,选择数据库commodity。
use commodity;
执行如下SQL语句,查看所有的表。
show tables;
执行如下SQL语句,查询goods表中所有数据。
select * from goods;
goods表中的数据为通过DMS导入的Excel表格中的数据。
执行如下SQL语句,创建一个名为book_types的表。
CREATE TABLE IF NOT EXISTS `book_types` (
`type_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '书籍类型ID',
`book_type` varchar(32) NOT NULL DEFAULT '' COMMENT '书籍类型',
PRIMARY KEY (`type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
执行如下SQL语句,在book_types表中插入数据。
INSERT INTO `book_types` (`type_id`, `book_type`) VALUES (1, '计算机');
INSERT INTO `book_types` (`type_id`, `book_type`) VALUES (2, '历史');
INSERT INTO `book_types` (`type_id`, `book_type`) VALUES (3, '小说');
INSERT INTO `book_types` (`type_id`, `book_type`) VALUES (4, '科幻');
执行如下SQL语句,查询book_types表中的所有数据。
select * from book_types;
执行如下SQL语句,删除book_types表中type_id等于1的数据,并进行查看。
delete from book_types where type_id=1;
select * from book_types;
执行如下SQL语句,更新book_types表中type_id为2数据book_type为python,并进行查看。
update book_types set book_type='python' where type_id=2;
至此实验结束。
证书如下:
实验总结
在本次实验中,我们学习了在阿里云上创建并管理一个RDS for MySQL实例的过程。首先,我们创建了一个RDS实例,并设定了数据库和账号的相关信息。使用DMS工具接管该实例后,我们发现DMS具备了MySQL客户端的功能,可以方便地在SQL窗口中执行数据库操作。
接下来,我们在DMS中创建了用于存储Excel数据的表,并利用DMS的数据导入功能将Excel表格中的数据批量导入到RDS数据库中。这一步骤使得数据导入变得简单快捷,大大提高了效率。
最后,我们通过配置ECS与RDS实例的连接,演示了如何使用命令行进行一系列简单的增删改查操作。这让我们更深入地理解了如何与RDS实例进行交互,并通过命令行对数据库进行操作。
通过本次实验,我们掌握了创建RDS实例、使用DMS进行数据导入和管理、以及通过ECS连接RDS实例并进行数据操作的方法和技巧。这些技能对于日后在阿里云上进行数据库管理和应用开发非常有帮助。总体而言,本次实验为我们提供了一个全面的学习和实践平台,让我们更好地了解了阿里云的数据库服务和相关工具。