`

ORACLE大数据量生成语句

 
阅读更多

             为了更好的测试我们的系统在一定数据量下的运行情况,时常需要准备大量的测试数据。如果有灵活的方法可以使用,那就可以事半功倍了。

     以下介绍如何在ORACLE数据库中进行大数据量的构造方法,数据量大小均为500万。

              '''基本主键列''' SELECT LEVEL AS ID

                                                    FROM DUAL CONNECT BY LEVEL <= 5000000

 

           '''基本的单据列''' SELECT 'SO20121123' || LPAD(LEVEL, 5, 0) AS ORDER_NO

                                                     FROM DUAL CONNECT BY LEVEL <= 5000000;

 

           '''基本的日期列''' SELECT TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_NUMBER(TO_CHAR(SYSDATE, 'J')),

                                                    TO_NUMBER(TO_CHAR(SYSDATE, 'J')))), 'J')

                                                    + DBMS_RANDOM.VALUE(1, 360000) / 3600 AS ENTRYDATE

                                                    FROM DUAL CONNECT BY LEVEL < 5000000;

 

       '''特定时间范围内''' SELECT TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_NUMBER(TO_CHAR(SYSDATE - 10, 'J')),

                                                   TO_NUMBER(TO_CHAR(SYSDATE, 'J')))), 'J')

                                                   + DBMS_RANDOM.VALUE(1, 360000) / 3600 / 24 AS ENTRYDATE

                                                    FROM DUAL CONNECT BY LEVEL < 5000000;

 

                '''随机数据''' SELECT DBMS_RANDOM.VALUE

                                                  FROM DUAL CONNECT BY LEVEL < 5000000;

 

         '''随机数据范围''' SELECT TRUNC(DBMS_RANDOM.VALUE(0, 100))

                                                  FROM DUAL CONNECT BY LEVEL < 5000000;

 

          '''随机字符串''' SELECT DBMS_RANDOM.STRING('A', 8)

                                                FROM DUAL CONNECT BY LEVEL < 5000000;

 

         '''复杂组合(订单)'''

                                        SELECT

                                                        'P-' || TO_CHAR((TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_NUMBER(TO_CHAR(SYSDATE - 30, 'J')),

                                                        TO_NUMBER(TO_CHAR(SYSDATE, 'J')))), 'J')

                                                        + DBMS_RANDOM.VALUE(1, 360000) / 3600 / 24), 'YYMMDD')

                                                       || '-' || LPAD(TRUNC(DBMS_RANDOM.VALUE(1, 100)), 5, '0')  AS 订单号,

                                                       '一般采购' AS 订单类型,

                                                      'SO20121123' || LPAD(LEVEL, 4, 0) AS 外部订单号,

                                                       'admin' AS 变更人,                

                                                        TO_DATE(TRU NC(DBMS_RANDOM.VALUE(TO_NUMBER(TO_CHAR(SYSDATE, 'J')),

                                                         TO_NUMBER(TO_CHAR(SYSDATE, 'J')))), 'J')

                                                         + DBMS_RANDOM.VALUE(1, 360000) / 3600 AS 更新时间

                                                          FROM DUAL CONNECT BY LEVEL < 5000000;


  '''加入随机用户或者字符'''

                                             SELECT

                                                         'P-' || TO_CHAR((TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_NUMBER(TO_CHAR(SYSDATE - 30, 'J')),

                                                         TO_NUMBER(TO_CHAR(SYSDATE, 'J')))), 'J') + DBMS_RANDOM.VALUE(1, 360000) / 3600 / 24), 'YYMMDD')

                                                        || '-' || LPAD(TRUNC(DBMS_RANDOM.VALUE(1, 100)), 5, '0')

                                                         AS 订单号, '一般采购' AS 订单类型, CASE TRUNC(DBMS_RANDOM.VALUE(0, 2))

                                                         WHEN 0 THEN ('SO20121123' || LPAD(LEVEL, 4, 0)) ELSE ('') END AS 外部订单号,

                                                         CASE TRUNC(DBMS_RANDOM.VALUE(0, 3))

                                                         WHEN 0 THEN 'admin' WHEN 1 THEN 'steven' ELSE 'joseph' END AS 变更人,

                                                         TO_DATE(TRUNC(DBMS_RANDOM.VALUE(TO_NUMBER(TO_CHAR(SYSDATE, 'J')),

                                                         TO_NUMBER(TO_CHAR(SYSDATE, 'J')))), 'J')

                                                         + DBMS_RANDOM.VALUE(1, 360000) / 3600 AS 更新时间

                                                         FROM DUAL CONNECT BY LEVEL < 5000000;

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    从数据库中读取数据自动生成XML

    SQL 语句使用 FOR XML AUTO 子句来生成 XML 格式的数据。 自动生成 XML 在 ASP.NET 中,我们可以使用 XmlTextReader 对象来读取生成的 XML 数据,然后使用 DataSet 对象来存储数据。DataSet 对象提供了一个强大的...

    Oracle官方培训教程

     * 提供了与第三代高级语言的接口软件PRO*系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。加上它有许多优秀的前台开发工具如 POWER BUILD、SQL*FORMS、VISIA BASIC 等,...

    Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解 (黄玮) 高清PDF扫描版

    重点讲解执行计划在sql语句执行的生命周期中所处的位置和作用,sql引擎如何生成执行计划以及如何获取sql语句的执行计划,如何从各种数据源显示和查看已经生成的执行计划。 第二篇“sql优化技术”深入分析oracle的...

    Oracle高性能SQL引擎剖析

    重点讲解执行计划在SQL语句执行的生命周期中所处的位置和作用,SQL引擎如何生成执行计划以及如何获取SQL语句的执行计划,如何从各种数据源显示和查看已经生成的执行计划。, 第二篇“SQL优化技术”深入分析Oracle的...

    ORACLE重建索引总结

    4、索引高度:索引高度是指由于数据行的插入操作而产生的索引层数,当表中添加大量数据时,oracle将生成索引的新层次以适应加入的数据行,因此,oracle索引可能有4层,但是这只会出现在索引数中产生大量插入操作的...

    Oracle优化常用概念.pptx

    Oracle 优化器是 Oracle 数据库管理系统中一个核心组件,负责根据用户提交的 SQL 语句生成最优的执行计划,以提高查询效率。以下是 Oracle 优化器中的一些常用概念: CBO/RBO Oracle 优化器有两种模式:CBO...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    6.2.1 查看最近生成的SQL语句 149 6.2.2 查看相关执行计划 149 6.2.3 收集执行计划统计信息 151 6.2.4 标识SQL语句以便以后取回计划 153 6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 ...

    Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解

    重点讲解执行计划在SQL语句执行的生命周期中所处的位置和作用,SQL引擎如何生成执行计划以及如何获取SQL语句的执行计划,如何从各种数据源显示和查看已经生成的执行计划。 第二篇“SQL优化技术”深入分析Oracle的SQL...

    ORACLE数据库智能化管理系统2012

    你们还在为处理日常大量数据,天天写过多的SQL语句而烦恼吗? 还在为由于没有面面具到的软件来汇制想要的日常数据报表而烦恼吗? 还在为查找帐务不平的数据或数据重复,而不知是哪些数据错误或重复,造成不能继续操作...

    Oracle 性能调优的基本方案

    可以使用 STATSPACKEstablish Oracle 性能快照表空间,获取性能数据,可以生成多个快照。 确定当前 Oracle 性能瓶颈 确定当前 Oracle 性能瓶颈是 Oracle 性能调优的第三步。从 Oracle 等待接口 v$system_event、v$...

    Oracle Stream-安装配置

     在9iR2之前高级复制应用比较广泛,高级复制也分两种:多主复制和基于物化视图的复制,就我理解其最大的劣势是大数据量下效率堪优,并且对于 ddl的支持不够友好。从技术实现思路上与streams几无相同之处,倒是逻辑...

    Oracle数据库管理员技术指南

    8.9 生成优化程序统计数据 8.9.1 使用 DBMS_UTILITY.ANALYZE _SCHEMA收集统计数据 8.9.2 使用 DBMS_UTILITY.ANALYZE _DATABASE 收集统计数据 8.9.3 使用 DBMS_STATS 收集性能统计 数据 8.10 优化环境 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以...

    动软.Net代码生成器

    动软.Net代码生成器Codematic是一款为C#数据库程序员设计的自动代码生成器,Codematic生成的代码基于面向对象的思想和三层架构设计,可以直接生成三层架构的项目的代码,使程序员可以节省大量机械录入的时间和重复...

    LTP.Net代码自动生成器(DbToCode)

    (4)支持不同类型数据层的生成: 基于SQL语句,基于参数,基于存储过程。 (5)支持选择不同架构代码生成:简单基本三层结构;基于工厂模式+反射机制+缓存机制的复合结构;自定义结构模版。 (6)可以生成增加,...

    DbLinq-0.20.1 VS2010

    有了Linq有一个很方便的地方就是有利于数据库开发,避免书写大量Sql语句(避免写错Sql语句,平常开发中经常会花费大量时间在Sql语句的调试上)。 但是很可惜的是微软的Linq to SQL只支持Sql Server,那么我想给大家...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    1.3.5高吞吐量 1.4 RAC存在的问题 1.4.1稳定性 1.4.2高性能 1.5 RAC软件 1.5.1存储管理软件 1.5.2集群管理软件 1.5.3数据库管理软件 1.6本章小结 第2章 搭建类似生产环境的RAC 2.1搭建环境 2.1.1 RAC的...

Global site tag (gtag.js) - Google Analytics