数据库
介绍数据库相关的语法及知识
J小白Y
一只想学习更多知识的小白,研究方向:大数据、人工智能(推荐算法、NLP等)!目标:每天进步一点点~
生活是你和自己竞争,而不是别人!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【ClickHouse】创建MergeTree的分区和非分区表
大多数用MergeTree的场景都建立分区表,不过MergeTree也可以创建非分区表的,下面就举例说明如何创建分区表和非分区表:创建非分区表:CREATE TABLE tabel( orderid Int64 COMMENT '订单号', orderstatus Nullable(String) COMMENT '订单状态' incomeconfirmtime Nullable(String) COMMENT '收入确认时间')ENGINE=MergeTree...原创 2020-05-19 15:37:47 · 4781 阅读 · 0 评论 -
【ClickHouse】表引擎详解
目录1.日志引擎系列--Log系列1.1TinyLog1.2Log1.3StripeLog2.Special系列2.1Memory2.2Merge2.3Distributed3.MergeTree系列--合并树引擎系列3.1MergeTree3.2ReplacingMergeTree3.3CollapsingMergeTree3.4VersionedCollapsingMergeTree3.5SummingMergeTree3.6Aggregati原创 2020-05-19 14:00:59 · 4954 阅读 · 0 评论 -
【ClickHouse】查看数据库容量和表大小的方法(system.parts各种操作方法)
clickhouse有system.parts系统表记录表相关元数据,可以通过该表对clickhouse上所有表进行查询表大小、行数等操作。1.查看数据库容量select sum(rows) as row,--总行数 formatReadableSize(sum(data_uncompressed_bytes)) as ysq,--原始大小 formatReadableSize(sum(data_compressed_bytes)) as ysh,--压缩大...原创 2020-05-15 10:12:17 · 22293 阅读 · 1 评论 -
【ClickHouse】row_number() over (partition by)的几种实现方法
hive中有row_number() over (partition by)函数,可以一句SQL实现想要的排序,在ClickHouse中有很多种实现方式,本篇就介绍一下几种方法。目录1.row_number排序2.row_number排序后取出rank=1的结果3.特殊场景1.row_number排序HIVE中写法:select number, row_number() over (partition by number order by time...原创 2020-05-14 10:57:30 · 23687 阅读 · 7 评论 -
【ClickHouse】三种排序函数(arrayEnumerate、arrayEnumerateDense、arrayEnumerateUniq)
众所周知,ClickHouse中的很多SQL语法和hive、传统数据库不同,本篇博文,是总结一下ClickHouse常用的排序函数和简单用法。1)arrayEnumerate 等同于 ROW_NUMBER2)arrayEnumerateDense 等同于 DENSE_RANK3)arrayEnumerateUniq ,网上有人说:它只返回元素第一次出现的位置。但是,从实验来看,这个函数结果更像是每个数元素出现的次数。SELECT [ '2020-05-01','2020-0...原创 2020-05-14 10:45:24 · 12553 阅读 · 0 评论 -
【ClickHouse】空值问题
目录1.建表时的空值问题2.查询时的空值问题3.关联问题 我们再ClickHouse环境下,SQL很多语法是和HIVE、Spark环境下不同的。以下从三个方面说明CK下空值的问题。1.建表时的空值问题如果我们建表时,不特殊说明空值,比如:CREATE TABLE test.table1(id String,name String) ENGINE = ...原创 2020-05-08 09:34:29 · 14088 阅读 · 0 评论 -
【数据库】Hive SQL 正则表达式进阶二(regexp_extract函数进阶使用)
在之前文章中(文章如下),小白有讲过正则的三个函数,替换、截取等操作。在工作中,又遇到了其他的问题,这里做一个进阶的讲解文章,欢迎遇到类似问题的小伙伴一起学习交流。初级用法参照下面的文章Hive SQL 正则表达式进阶一(regexp的三个函数)https://blog.youkuaiyun.com/Jarry_cm/article/details/87272189场景一有以下几...原创 2020-01-15 20:23:18 · 9468 阅读 · 0 评论 -
【数据库】HIVE SQL之JSON字符串解析的坑
对于hive对JSON字符串的解析小白在之前博文中已经有两篇做过详细的介绍了,这边博文主要记录一下,小白在工作中遇到的一个实例,巨坑。 案例如下:{"id":"23|38","index":"1","name":"高星好评","subfilters":,"type":"23"}一眼看上去,是不是符合JSON字符串的风格,然后就开始解析select filters,...原创 2019-12-19 21:36:59 · 2575 阅读 · 0 评论 -
HIVE导出数据命令hive -e的使用(导出文件前先删除原文件的内容)
小白最近在工作中遇到,从hive表中向服务器导出txt文档的问题,之前没有注意到一个问题:情景一:导入到csv文件 之前一直是将hive表中的查询结果导入到csv文件中,用下面的语句执行:每次的csv文件都是覆盖上一次的结果file_path="/home/chen"file_name_t="test.csv"hive -e "set hive.re...原创 2019-07-27 10:32:19 · 2492 阅读 · 0 评论 -
【数据库】HIVE SQL之lateral view json_tuple和lateral view explode联合使用
在工作中,处理数据时遇到的情况是多种多样的,这次就遇到一种相对有一丢丢复杂的情况,案例如下:String类型的字段,案例如下:[{"key":"upload-screenshot","value":false},{"key":"choice","value":"已解决"}] 现在需要把key和value解析出来。乍一看,直接用get_json_obj...原创 2019-07-20 17:16:30 · 4463 阅读 · 0 评论 -
【Python】如何用hive调度堡垒机上的python脚本
工作中,如果我们本地要操作的数据量大,那么主机是跑不起来python脚本的,这个时候,就要用到服务器(也叫堡垒机)了。那么如何用HIVE调用堡垒机上的python脚本呢?今天小白就总结一下步骤和一些注意事项~1.首先将Python脚本上传到堡垒机上2.上传后,在HIVE中编写shell JOB#这里设置地址等变量,可以重复使用file_path="/home/chen_l...原创 2019-06-22 19:38:28 · 1748 阅读 · 0 评论 -
【数据库】HIVE SQL:直接建表,like建表,as 建表小结
工作中,根据场景不同,可能建表方式不同,有时候用like、as方式建表会达到事半功倍的效果,下面是小白总结的三种创建表的方式。1、使用create命令创建一个新表create命令建表,参数不同,也有些许的区别,下面来看一下,创建一个带有分区的表,分区按天,取名为d可以看到分区是用partitioned by方式,指定分区的参数,另外下面的stored as是用来指定存储的...原创 2019-06-22 19:38:59 · 7406 阅读 · 0 评论 -
【数据库】Navicat编写MySQL自定义函数详解
小白最近迷上了MySQL,由于工作中大部分用HIVE,很少用到MySQL,但是后来发现MySQL可以处理递归等可循环的功能,所以,就安装了一个本地的MySQL进行学习,以下是小白对自定义函数的尝试。首先来说一下,自定义函数的优点:调用函数可以简化代码,减少工作量,减少数据在数据库和应用服务器上的传输,提高数据处理的效率。自定义函数语法:#创建一个函数CREATE F...原创 2019-06-09 10:59:04 · 15973 阅读 · 6 评论 -
【数据库】快速启动、关闭MySQL
启动:在电脑的开始中,输入运行,弹出运行的窗口,输入命令,如下图:关闭:在电脑的开始中,输入运行,弹出运行的窗口,输入命令,如下图:...原创 2019-06-03 09:23:27 · 606 阅读 · 0 评论 -
【数据库】Navicat for MySQL连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol错误
小白在安装好MySQL之后,使用Navicat for MySQL工具时,又遇到了连接不上的问题,查了很多资料,最后才得以解决,这里小白做一个总结。 在连接测试时,一直报错,如下图: 当时很方,这是什么鬼,度娘了N个回答,有的说是版本不匹配,小白去吭哧吭哧下5.7的版本,MySQL官网一看,又没有64bit版本,天啦撸,又去各种找资源。后来就想,也许不...原创 2019-06-03 09:23:58 · 3261 阅读 · 0 评论 -
【数据库】Windows下如何安装MySql
最近看到很多关于MySql相关的语法,小白也想学习一些MySQL的存储过程的写法,因此就想安装MySQL,过程中遇到过一些问题,这里记录下来~第一步:下载首先,去官网下载匹配电脑的MySQL版本,网址如下:https://www.mysql.com/然后,进入到下载的页面:1)进入下载页2)找到红框中位置3)点击下载4)进入到下载页,在页面中...原创 2019-06-03 09:24:10 · 2378 阅读 · 2 评论 -
【数据库】nvl,coalesce,decode函数的区别与用法
最近小白在工作中遇到一种场景,当一个字段的值为空时,用0代替,之前小编都用case when来结局,现在发现,这个代码写起来真是很长,也很麻烦。后来用了coalesce函数来化解,但是最近发现这种函数还有两个,这里就做一个总结。NVL函数用法:1)select nvl(12,-999);2)select nvl(null,-999);当是1)这种情况时,返回的...原创 2019-05-25 22:08:00 · 6820 阅读 · 2 评论 -
【数据库】HIVE SQL函数之行转列
小白之前经常在工作中遇到需要行转列的情况,这次就总结一下,之前遇到过的各种情况,及在各种情况下的函数应用。场景:现有一个表,表示一个房型在未来60天的是否可订情况,由于房型的数据量是庞大的,可能达到几十亿,那么在展示时,就需要把可订酒店的可订天数展示为一个字段,这样就会缩小整个表的行数。id isbook time 698570 0 2019-...原创 2019-05-25 22:08:29 · 6868 阅读 · 0 评论 -
【数据库】lateral view explode函数的坑
之前小白有写过一篇文章是高效的解析字符串,里面讲到过一个方法:lateral view explode最近小白发现,这个函数在使用时,还是有一些坑的,这里小白做一个总结。在正常解析一个有值的字符串时,用lateral view explode是完全ok的,但是,当遇到该字符串为空时,如果在使用该函数,就会导致该条记录消失。具体场景如下:sid filterlis...原创 2019-05-25 22:11:07 · 10742 阅读 · 0 评论 -
【数据库】HIVE SQL高效的字符串解析函数(lateral view、json_tuple)
用户行为的数据每天都是上亿的,那么如何高效将行为数据一个个解析出一目了然的字段呢?在小白最初工作时,用的就是最基础的get_json_object函数,没话说,真的好用,也好学习,将string类型中的数据一个对应一个的解析出来。话不多说,来个案例:{"otherlistcount":"0|0|0|0","regiontype":"5","regionid":"0"}将这个...原创 2019-05-25 22:09:46 · 7165 阅读 · 0 评论 -
【数据库】HIVE SQL如何返回周or周几
在工作中,经常会遇到在统计历史数据时,需要按周或者按月来展示,或者今年按照同比去年的同月、同周的数据,但是在hive中没有直接返回周几的函数,只有返回是一年当中的第几周,那么返回周的函数是什么?又如何返回一周中的周几呢?1.返回一年中的第几周即可以是时分秒也可以直接是日期select weekofyear('2011-12-08 10:03:01') as weeks...原创 2019-05-20 09:30:59 · 17315 阅读 · 0 评论 -
【数据库】HIVE SQL:用连接操作替代子查询
由于HQL和SQL很像,很多功能也通用,所有,有些小伙伴直接把SQL的方法套用到HQL上,经常遇到各种报错。这次,小白又发现HQL不支持子查询操作,那么如何解决这种需求呢?如下:想把最大年龄的人取出来 这里如下语句无论是用=或者是in都不支持select * from table where age =(in) (select max(age) from ta...原创 2019-05-20 09:31:10 · 6554 阅读 · 1 评论 -
【数据库】HIVE SQL索引及其使用
最近在用一张8亿数据量表作为主表去关联一个千万量级的表时遇到一个问题,JOB运行的特别慢,而且大量的时间花费在了大表的查询上。如何解决这个问题,首先想到是不是由于数据偏移造成的,对应了各种数据偏移的场景,最后认定不是数据偏移造成的。那怎么办呢?后来想到用索引!由于对于索引不是特别了解,查了各种资料,这里做一个总结,加深对索引的理解。 HIVE中如何创建索引?第一步...原创 2019-04-16 21:55:58 · 9236 阅读 · 1 评论 -
【数据库】HIVE SQL中两种日期的转换
工作中,经常遇到各种格式的日期形式,而且又需要进行关联操作,这个时候怎么办呢?之前每次都是用到的时候各种查资料。这次就总结一下,相关函数,后期不定时持续更新~Exp1:'2018/11/5'和'2018-11-05'两种类型的进行日期关联?这时,就用到大家常用的函数:unix_timestamp在日常使用时,可能都用来取时间戳了,比如:select unix_time...原创 2019-04-07 23:02:09 · 10652 阅读 · 0 评论 -
【数据库】HIVE SQL -left join (on 和 where条件放置的区别)
在使用left join的过程中,总是遇到一个问题,就是将条件放在on中还是where条件中。在查过一些资料和实际操作后,总结了一下: 在多张表连接时,都会生成一张中间表,然后再将这张临时表返回给用户。 在用left join中,on和where条件的区别如下: (1)on条件是在生成中间表时使用的条件,它不管on中的条件是否为真,都会返回左表中的记录。...原创 2019-04-07 23:03:32 · 12359 阅读 · 2 评论 -
【数据库】HIVE SQL中join不支持非等值连接如何解决
小伙伴们在HIVE中写SQL时,会遇到一种情况,当我们想把不相等的情况拿出来时,无法直接写字段A<>字段B,否则会报错。那么,在工作中,有这样一个场景:我们想从一个订单表中,剔除测试用户的订单,该如何实现呢?select a.uid,a.orderid from table1 a --订单表 left join table2 b --测试用户id表 ...原创 2019-04-07 23:02:42 · 10645 阅读 · 1 评论 -
【数据库】HIVE SQL中三种join中的坑(自动过滤掉两边同为null的数据)
最近在使用union all的过程中,遇到了一些问题,又GET了一个知识点,作为一个总结,记录一下~where条件的坑:案例,若一个字段的值为1,2,NULL(自然空,而不是'NULL')这时,如果代码这样写:select id,data,name from aa where name <> 'us'那么,为空的这一条记录是不会被筛选出来的。id...原创 2019-03-09 16:08:56 · 17637 阅读 · 4 评论 -
【数据库】HIVE SQL--排序
最近听小伙伴说了一个这样一个问题:学生表有两列姓名,分数,求张三在班级的排名。(注:学生姓名没有重复,分数可以重复,同分数的人排名一样)样例数据:student score 张三 90 李四 100 王五 80 王小明 80 李小鹏 70 据说万能的知识库有一个这样的方法:我试验了一下,未能成功。方法如下:se...原创 2019-03-09 16:09:17 · 6859 阅读 · 0 评论 -
【数据库】Hive SQL 正则表达式进阶一(regexp的三个函数)
对于从事数据方面工作的同学来说,不可避免的要使用到正则表达式。对于一个正则小白来说,第一次在网上搜正则表达式时,我表示,一脸生无可恋。为了方便这方面以后的深入学习及使用,特意做一个进阶式记录,也供各位小伙伴参考。1.regexp/rlike 匹配符合条件的数据,若要做排除,前面加not即可。select roomname from aa where roomname ...原创 2019-02-21 20:51:19 · 22372 阅读 · 0 评论 -
【数据库】HIVE SQL中的字符串连接函数(CONCAT)
众所周知,在MySQL、SQLSERVER中,都有字符串连接函数,那么,HQL也不例外。在学习、工作中,不可避免的会遇到需要将两个字段合并展示的需要。最基础的一个方法是:CONCAT('abc','def')这个函数的用法有一点需要注意,就是当遇到字段为空时,空的形式不同,结果也不同。eg:SELECT CONCAT('abc',NULL) 结果为NULL SEL...原创 2019-02-11 15:25:40 · 16518 阅读 · 2 评论 -
【数据库】HIVE SQL实现本月一号、月底的提取
在工作中很多时候会遇到需要取当前月一月的订单、产量等数据,那么如何实现呢?首先,当前日期函数,取名为currentday='${zdt.format("yyyy-MM-dd")}'例如:当前日期所在月的一号,取名为currentmontfirstday='${zdt.add(2,0).format("yyyy-MM")}-01'例如:当前月的上个月一号,取名为lastm...原创 2019-01-31 15:40:37 · 21204 阅读 · 0 评论 -
【数据库】Hive SQL--如何使用分位数函数(percentile)
在做一些酒店产量分析时,用到统计学中常用的分位数函数,所以就学习了一下分位数函数在HIVE中的应用。HIVE中有两个关于分为数的函数:percentile和percentile_approx。使用方式:percentile:percentile(col, p) col是要计算的列(值必须为int类型),p的取值为0-1,若为0.2,那么就是2分位数,依次类推。percentile_...原创 2018-08-29 16:56:53 · 126017 阅读 · 5 评论 -
【数据库】HIVE SQL中MAP、String、Struct类型数据解析
1:MAP类型表中数据类型为:map<string,string>表中数据样式为:要解析出city:select env['city'] from table2:String类型表中数据样式为:要解析出env_provinve、env_province或者:fifterlist需要先处理一下才可以取出第一步:第二步:3:St...原创 2018-09-13 16:53:16 · 25799 阅读 · 1 评论 -
【数据库】HIVE SQL几种排序函数(ROW_NUMBER&RANK&DENSE_RANK)
最初用排序函数时,只会用row_number,后来在网上一看,才知道由于场景不同,是有不同的函数的。作为一个总结,为以后的使用提供帮助。一、ROW_NUMBER 对于排序,使用较为广泛的函数就是row_number。据网上说可以用来实现web程序的分页,小白不懂开发,所以不知道如何来分页。但是,在hive中,它的用途还是很广泛的。row_number和over一起配对使用,每一行记录...原创 2018-08-21 13:42:51 · 24619 阅读 · 1 评论 -
【数据库】将CSV和TXT文件导入hive表中
对于csv和txt文件导入hive表,区别在于二者的分隔符不同,这一点在建表语句中体现出来。下面是两种方式的导入方式步骤:1.将csv文件导入到hive表(1)建表语句:USE database;CREATE TABLE table( ssid int comment 'ssid', orderid int comment 'orderid')C...原创 2019-09-05 15:37:22 · 5318 阅读 · 0 评论
分享