每天一道大厂SQL题【Day07】教育领域SQL实战_现在需要将元oracle数据库中数据迁移至hive仓库,请写出图书(1)

文章介绍了如何在图书管理系统中创建基本表结构,执行SQL查询,如查找特定读者信息、图书信息等,并演示了从Oracle数据库到Hive仓库的数据迁移过程。还涉及到了数据备份和Hive中的数据更新方法。
摘要由CSDN通过智能技术生成
序号字段名称字段描述字段类型
1READER_ID借书证号文本
2COMPANY单位文本
3NAME姓名文本
4SEX性别文本
5GRADE职称文本
6ADDR地址文本

借阅记录(数据表名:BORROW LOG)

序号字段名称字段描述字段类型
1READER_ID借书证号文本
2BOOK_ID总编号文本
3BORROW_DATE借书日期日期

(1) 创建图书管理库的图书、读者和借阅三个基本表的表结构。请写出建表语句。

(2) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。

(3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。

(4) 查找价格介于10元和20元之间的图书种类(SORT)出版单位(OUTPUT)和单价(PRICE),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。

(5) 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。

(6) 求”科学出版社”图书的最高单价、最低单价、平均单价。

(7) 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。

(8) 考虑到数据安全的需要,需定时将“借阅记录”中数据进行备份,请使用一条SQL语句,在备份用户bak下创建与“借阅记录”表结构完全一致的数据表BORROW_LOG_BAK.井且将“借阅记录”中现有数据全部复制到BORROW_L0G_ BAK中。

(9) 现在需要将原Oracle数据库中数据迁移至Hive仓库,请写出“图书”在Hive中的建表语句(Hive实现,提示: 列分隔符|;数据表数据需要外部导入:分区分别以month_part、day_part 命名)

(10) Hive中有表A,现在需要将表A的月分区 201505 中 user_id为20000的user_dinner字段更新为bonc8920,其他用户user_dinner字段数据不变,请列出更新的方法步骤。(Hive实现,提示:Hlive中无update 语法,请通过其他办法进行数据更新)

实现

数据准备

(1)-- 创建图书表book

CREATE TABLE test_sql.book(book_id string,
`SORT` string, book_name string, writer string, OUTPUT string, price decimal(10,2));
INSERT INTO TABLE test_sql.book VALUES ('001','TP391','信息处理','author1','机械工业出版社','20'); INSERT INTO TABLE test_sql.book VALUES ('002','TP392','数据库','author12','科学出版社','15');
INSERT INTO TABLE test_sql.book VALUES ('003','TP393','计算机网络','author3','机械工业出版社','29'); INSERT INTO TABLE test_sql.book VALUES ('004','TP399',' 微 机 原 理 ','author4',' 科 学 出 版 社 ','39'); INSERT INTO TABLE test_sql.book VALUES ('005','C931','管理信息系统','author5','机械工业出版社','40'); INSERT INTO TABLE test_sql.book VALUES ('006','C932','运筹学','author6','科学出版社','55');

– 创建读者表reader

CREATE TABLE test_sql.reader (reader_id string,
company string, name string, sex string, grade string, addr string);
INSERT INTO TABLE test_sql.reader VALUES ('0001','阿里巴巴','jack','男','vp','addr1');
INSERT INTO TABLE test_sql.reader VALUES ('0002',' 百 度 ','robin',' 男 ','vp','addr2'); INSERT INTO TABLE test_sql.reader VALUES ('0003',' 腾 讯 ','tony',' 男 ','vp','addr3'); INSERT INTO TABLE test_sql.reader VALUES ('0004',' 京 东 ','jasper',' 男 ','cfo','addr4'); INSERT INTO TABLE test_sql.reader VALUES ('0005','网易','zhangsan','女','ceo','addr5'); INSERT INTO TABLE test_sql.reader VALUES ('0006','搜狐','lisi','女','ceo','addr6');

– 创建借阅记录表borrow_log

CREATE TABLE test_sql.borrow_log(reader_id string,
book_id string, borrow_date string);

INSERT INTO TABLE test_sql.borrow_log VALUES ('0001','002','2019-10-14'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0002','001','2019-10-13'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0003','005','2019-09-14'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0004','006','2019-08-15'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0005','003','2019-10-10'); INSERT INTO TABLE test_sql.borrow_log VALUES ('0006','004','2019-17-13');

思路分析

  1. create table as select …

9.在Hive中创建表 “book”,该表有以下列:book_id,book_name,price,author,publish_date。导出Oracle数据库中的"图书"数据并存为一个列分隔的文本文件。

10.使用CREATE TABLE AS SELECT语句,将需要修改的数据复制到一个新表中 ,将需要修改的数据加入到新表中,删除原表A的数据,重命名新表为A,添加月分区

答案获取

建议你先动脑思考,动手写一写再对照看下答案,如果实在不懂可以点击下方卡片,回复:大厂sql 即可。
参考答案适用HQL,SparkSQL,FlinkSQL,即大数据组件,其他SQL需自行修改。

加技术群讨论

点击下方卡片关注 联系我进群

或者直接私信我进群

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

sdn.net/topics/618545628)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值