OceanBase V4.2解析:如何用迭代器 Generator快速生成任意数据

news2024/12/25 9:31:13

前言

 

OceanBase 4.2 版本新增了迭代器 generator 函数。尽管这一功能在数据库领域中已属于通用能力,postgresql 也提供了类似的函数,然而,与MySQL和Oracle数据库在默认情况下是需要用户额外编写函数来实现的。OceanBase 4.2 的这一更新也是满足更多用户的需求。

迭代器具有自我多次运行的能力,通过generator函数,用户可以快速地生成任意所需数据。以下是关于generator函数在OceanBase中的具体应用案例。

随机0至99的字符

select  floor((RAND())*100)  from table(generator(10)) ;

1703044518

随机生成10到19的随机

select  floor((RAND()+1)*10)  from table(generator(10)) ;

1703044553

随机生成小数据点后2位,前面整数是0

SELECT ROUND(RAND(), 2) from table(generator(10)) ;

1703044570

随机生成小数据点后4位,前面整数是2位

SELECT ROUND(RAND()*100, 4) from table(generator(10)) ;

1703044619

生成1994年1月15日往前的日期时间,
随机增加数据

select date_add('1994-01-15' , interval floor((RAND()+1)*20) day )   from table(generator(10)) ;

1703044648

生成1994年1月15日往前的随机日期时间,
递减数据1  

select date_sub('1994-01-15' , interval floor((RAND())*10) day )   from table(generator(10)) ;

1703044729

生成时间,1994年1月15做基准,随机按月递减

select date_sub('1994-01-15' , interval floor((RAND())*10) month )   from table(generator(10)) ;

1703044797

生成时间,1994年1月15做基准,随机按年递减

select date_sub('1994-01-15' , interval floor((RAND())*10) year )   from table(generator(10)) ;

1703044822

生成时间,1994年1月15做基准,随机按年、月、日 递减

select date_sub(date_sub(date_sub('1994-01-15' , interval floor((RAND())*10) year ),interval floor((RAND())*10) month),interval floor((RAND())*10) day)   from table(generator(10)) ;

1703044847

生成顺序序列

CREATE SEQUENCE seq1 START WITH 1 INCREMENT BY 1;

select seq1.nextval  from table(generator(10)) ;

1703044881

生成长度为100的随机字符串

select  RANDSTR(100, RANDOM()) from table(generator(10)) ;

1703044951

生成定算的随机  固定数组变量

假设列表选项有MAIL、TRUCK、AIR、FOB、REG AIR,只想生成数组变量这些相关的东西。

Postgresql很简单就可以做到,它具备变量数组的表达,例如(array['MAIL', 'TRUCK', 'RAIL', 'FOB', 'SHIP', 'REG AIR'])[列表]。

我找了OceanBase的官方相关文档,目前数组变量固定输出的函数,但是达到同样的目标可以用以下较灵活的方法制造数据

select  

CASE

      WHEN concat("test",floor((RAND())*6)) ='test0' THEN 'MAIL'

      WHEN concat("test",floor((RAND())*6)) ='test1' THEN 'TRUCK'

      WHEN concat("test",floor((RAND())*6)) ='test2' THEN 'AIR' 

      WHEN concat("test",floor((RAND())*6)) ='test3' THEN 'RAIL' 

      WHEN concat("test",floor((RAND())*6)) ='test4' THEN 'FOB' 

      WHEN concat("test",floor((RAND())*6)) ='test5' THEN 'SHIP' 

      WHEN concat("test",floor((RAND())*6)) ='test0' THEN 'MAIL'

      WHEN concat("test",floor((RAND())*6)) ='test1' THEN 'TRUCK'

      WHEN concat("test",floor((RAND())*6)) ='test2' THEN 'AIR' 

      WHEN concat("test",floor((RAND())*6)) ='test3' THEN 'RAIL' 

      WHEN concat("test",floor((RAND())*6)) ='test4' THEN 'FOB' 

      WHEN concat("test",floor((RAND())*6)) ='test5' THEN 'SHIP'

ELSE 'REG AIR'

END

from table(generator(10)) ;

1703044977

案例tpc-h基准中的 lineitem表

insert /*+ ENABLE_PARALLEL_DML PARALLEL(4) */ into  lineitem   

select  seq2.nextval,

      floor((RAND()+1)*1000000),

      floor((RAND()+1)*10000),

      floor((RAND()+1)*100),

      floor((RAND()+1)*10000),

      floor((RAND()+1)*1000000),

      floor((RAND()+1)*1000),

      floor((RAND()+1)*1000),

      'F',

      'F',

      date_add('1994-01-15' , interval floor((RAND()+1)*10) day ),

      date_add('1994-09-25' , interval floor((RAND()+1)*7) day ),

      date_add('1995-05-15' , interval floor((RAND()+1)*2) year ), 

      RANDSTR(20, RANDOM()),

      CASE

      WHEN concat("test",floor((RAND())*6)) ='test0' THEN 'MAIL'

      WHEN concat("test",floor((RAND())*6)) ='test1' THEN 'TRUCK'

      WHEN concat("test",floor((RAND())*6)) ='test2' THEN 'AIR'

      WHEN concat("test",floor((RAND())*6)) ='test3' THEN 'RAIL'

      WHEN concat("test",floor((RAND())*6)) ='test4' THEN 'FOB'

      WHEN concat("test",floor((RAND())*6)) ='test5' THEN 'SHIP'

      WHEN concat("test",floor((RAND())*6)) ='test0' THEN 'MAIL'

      WHEN concat("test",floor((RAND())*6)) ='test1' THEN 'TRUCK'

      WHEN concat("test",floor((RAND())*6)) ='test2' THEN 'AIR'

      WHEN concat("test",floor((RAND())*6)) ='test3' THEN 'RAIL'

      WHEN concat("test",floor((RAND())*6)) ='test4' THEN 'FOB'

      WHEN concat("test",floor((RAND())*6)) ='test5' THEN 'SHIP'

      ELSE 'REG AIR'

      END as shipmode,

      RANDSTR(25, RANDOM()) 

from table(generator(10)) ;

1703044996

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2099308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙(API 12 Beta6版)图形【AR物体摆放】 AR引擎服务

概要 本章节通过AR Engine识别设备周围的平面,并允许用户在平面上放置虚拟物体,实现虚拟和现实的融合。AR物体摆放可用于虚拟家具、数字展厅等应用,给用户提供虚实结合的新体验。通过本示例,您可以学习并掌握如何使用AR Engine开…

刷题记录(2)

1. HWOD机试 - 模拟消息队列(100) package com.yue.test;import org.junit.Test;import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List;/*** Author: 夜雨* Date: 2021-12-08-10:31* Description:* Version 1.0*/ public…

C#编译成32和64位的区别

C#编译成32和64位的区别 背景 C#32位客户端项目在把代码提交到客户端之后,jinkens直接崩掉了。原因是内存占用100%运维同学建议改成64位,理由是电脑内存大,客观条件IT不给扩。那么在同一台电脑上,32位和64位在编译过程中有什么区…

【DEV工具-IDEA】idea的光标变成黑块了?

项目场景: 解决:windows:按一下insert键。

Python获取次幂数据公众号榜单数据

公众号排行榜,wx公众号排行榜,原创排行榜,赞赏排行榜,评论排行榜 教程仅供参考,请勿滥用,由此带来的法律责任,需由自己承担。 一、运行效果 二、程序代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ @author: Roc-xb """import request…

Java学习第六天

Java进阶知识面向对象 static:是静态的意思,可以修饰成员变量,表示该成员变量在内存中只存储一份,可以被共享访问。 静态成员变量(有static修饰,属于类,内存中加载一次)&#xff1a…

三元里等你!融合三个经典模型!Transformer-LSTM-SVM多变量时间序列预测(Matlab)

三元里等你!融合三个经典模型!Transformer-LSTM-SVM多变量时间序列预测(Matlab) 目录 三元里等你!融合三个经典模型!Transformer-LSTM-SVM多变量时间序列预测(Matlab)效果一览基本介…

I2C总线的标准收发代码

结合I2C总线协议的知识,我们可以知道I2C写数据由一下10个步骤组成。 第一步,发送一个起始信号。 第二步,发送7bit从机地址,即OZ9350的地址。此处需要注意,发送数据时,无法发送7bit数据,此处发…

求和放大器(单位/非单位增益加法器+比例加法器)+运算放大器实现积分器和微分器

2024-9-2,星期一,22:00,天气:晴转雨,心情:晴。新的一周开始了,新的一个月又开始啦,希望大家开开心心,以崭新的面貌迎接中秋和十一假期!废话不多说&#xff0c…

LinkAI工作流支持广场访问和api调用啦

什么是工作流 LinkAI工作流(WorkFlow)是一种灵活的智能体搭建方式。可以自由选择「大模型、应用、知识库、插件、意图识别、转人工、渠道消息发送」等多种原子能力,通过可视化拖拉拽的方式进行组合编排,零代码搭出一个业务流程。…

PPT制作加速器:3款工具插件的演示文稿制作更高效

IvyhTools英豪插件 IvyhTools是一款功能强大的PPT插件,主要用于辅助用户进行各种PPT编辑和处理操作。该插件具备以下主要功能: 字体编辑:用户可以对PPT中的字体进行编辑和调整。 动图录制:支持录制动态图像,方便用户在…

深度学习(四)-卷积神经网络

神经网络局限 不考虑数据形状 未考虑数据的“形状”,会破坏数据空间结构。例如,输入数据是图像时,图像通常是高长通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据 参数庞大 全连接网络参数…

中小企业怎么选择MES:专用MES、集成MES和可配置MES

专用MES、集成MES和可配置MES是MES(制造执行系统)在不同发展阶段和应用场景下的三种主要形式。它们各自具有不同的特点和应用优势,下面将分别进行详细介绍。 专用MES 定义与特点: 专用MES是针对特定行业或特定生产流程而设计的…

CCS报错:error: cannot find file “libc.a“+CCS安装包

1、编译工程出现报错以下报错信息: error: cannot find file "libc.a" warning: automatic RTS selection: attempt to automatically link in index library "libc.a" failed; file not found warning: entry-point symbol "_c_int0…

新剧震撼登场,首集飙到9.2分,观众无不惊叹

自2022年《弹子球游戏》首季发布以来,它以其无与伦比的电影质感和精湛的双线叙事手法,让人印象深刻。这部Apple TV出品的剧集,改编自作家李敏金的小说《柏青哥》,讲述了四代移民的艰辛故事。它不仅仅是一部剧集,更是一…

RuoYi-Cloud 部署与配置 [CentOS7]

静态IP设置 # 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33# 修改文件内容 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic IPADDR192.168.18.130 NETMASK255.255.255.0 GATEWAY192.168.18.2 DEFROUTEyes IPV4_FAILURE_FATALno IPV6INIT…

电脑屏幕监控软件有哪些?10款真实好用的电脑屏幕监控软件 | 超全盘点,不容错过!

"千里眼,顺风耳,世间万事皆能察。" 在当今数字化时代,却有了现实版的映射——电脑屏幕监控软件,这些软件如同企业的“千里眼”,能够实时洞察员工的电脑使用情况,确保信息安全,提升工…

动态规划法-资源分配问题

动态规划法 - 资源分配问题 问题描述 把4个份额的资源分配给3个工程,给定利润表如下表所示,写出资源的最优分配方案的求解过程。 4份资源分配给3个工程的利润表 步骤一:求各个阶段不同分配份额时的最大利润及分配份额 目标 我们的目标是…

加速电商物流效率:推荐几款实用的快递批量查询工具

做电商必不可少的快递批量查询平台分享:固乔快递查询助手使用全攻略 在电商行业日益竞争的今天,高效管理物流信息成为了商家们不可或缺的一环。面对每天成百上千的订单和快递单号,如何快速、准确地查询并跟踪物流状态,成为了电商…

SpringBoot的配置文件详解

SpringBoot配置文件概述 1)SpringBoot的配置文件的名字必须以application开头: 2)SpringBoot配置文件有两种后缀:.properties和.yml(表示的意思是一样,只是编写数据的格式不同) application.p…