`
dy3168729
  • 浏览: 40543 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Oracle中如何用一条SQL快速生成10万条测试数据

阅读更多

做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法。
产生测试数据的SQL如下:
SQL> select rownum as id,
  2                 to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime,
  3                trunc(dbms_random.value(0, 100)) as random_id,
  4                dbms_random.string('x', 20) random_string
  5            from dual
  6          connect by level <= 10;
 
        ID       INC_DATETIME         RANDOM_ID          RANDOM_STRING
---------- ------------------- ---------- --------------------------------------------------------------------------------
         1    2009-12-08 19:43:14         76       GWMU280MIVBKKOCZV620
         2    2009-12-08 19:43:15         34       GNV88O6TDHD3TWC5GWI5
         3    2009-12-08 19:43:16         77       LI6H4O5IAHQIMO4B0WMH
         4    2009-12-08 19:43:17         99       LP7XP49I0YOJIYSJDQZO
         5    2009-12-08 19:43:18         55       V3284X9RXW4UZI8BQMO3
         6    2009-12-08 19:43:19         16       T0OA52UAOGHL1TT46H25
         7    2009-12-08 19:43:20         61       UY6RUOF7HWTO86942FLP
         8    2009-12-08 19:43:21         25       JYXO4OPEW8J1CKVCPDJR
         9    2009-12-08 19:43:22         10       DONU6W9QVQM3KJ2UG8LO
        10   2009-12-08 19:43:23         76       J8DJLVNOUIZDXE4UXUJG
 
10 rows selected

上面SQL是利用了Oracle数据库语法的几个实用小技巧实现的:
1、利用Oracle特有的“connect by”树形连接语法生成测试记录,“level <= 10”表示要生成10记录;
2、利用rownum虚拟列生成递增的整数数据;
3、利用sysdate函数加一些简单运算来生成日期数据,本例中是每条记录的时间加1秒;
4、利用dbms_random.value函数生成随机的数值型数据,本例中是生成0到100之间的随机整数;
5、利用dbms_random.string函数生成随机的字符型数据,本例中是生成长度为20的随机字符串,字符串中可以包括字符或数字。
ok,那要生成10万条测试记录表可以用如下SQL:

 

这里有两种使用示例:

1.
create table myTestTable as
select rownum as id,
               to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime,
               trunc(dbms_random.value(0, 100)) as random_id,
               dbms_random.string('x', 20) random_string
          from dual
        connect by level <= 100000;

 

 2.

insert into  MYTESTTABLE(ID,INC_DATETIME)
select rownum as id,
       to_char(sysdate + rownum / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime
       --trunc(dbms_random.value(0, 100)) as random_id,
       --dbms_random.string('x', 20) random_string
       from dual
connect by level <= 10000;

分享到:
评论

相关推荐

    Oracle中如何用一条SQL快速生成10万条测试数据.txt

    ### 核心知识点:使用一条SQL语句快速生成10万条测试数据 #### 1. 使用`CONNECT BY LEVEL`生成连续行 在Oracle中,`CONNECT BY LEVEL`是一个非常强大的功能,它可以用来生成连续的行数据。在这个例子中,我们使用...

    快速生成10万条测试数据

    因此,本篇文章将详细介绍如何利用Oracle数据库快速生成10万条测试数据。 #### 一、Oracle数据库生成测试数据的方法 Oracle是一种广泛使用的商业关系型数据库管理系统,它提供了强大的数据管理和处理能力。对于...

    Oracle中如何用SQL检测字段是否包括中文字符

    首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...

    如何将Oracle的一个大数据表快速迁移到 Sqlserver2008数据库(图文教程)

    本教程将详细讲解如何将Oracle的一个大数据表快速迁移到SQL Server 2008数据库,采用的方法是通过SQL Server Integration Services (SSIS) 的导入和导出向导。 首先,确保你的SQL Server 2008 R2服务器已经安装了...

    Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    本文将详细讲解如何使用JDBC批量插入10万条数据,并探讨其背后的原理和优化策略。 批量处理在JDBC中主要通过Statement对象的`addBatch()`和`executeBatch()`两个方法实现。在示例代码中,我们创建了一个`...

    导出Oracle 表结构工具

    DBExport是一个专门设计用于Oracle数据库的工具,它能够快速高效地导出表结构和数据。标题中的"DBExport2.51 For ORACLE"指的是该工具的特定版本,适用于Oracle数据库,版本号为2.51。这个工具提供了直观的界面和...

    指导学习oracle

    接着,使用一个PL/SQL块来插入100万条随机数据,为了提高性能,每插入1000条数据就进行一次提交。 ##### 测试查询性能 为了测试查询效率,可以运行以下SQL命令: ```sql SET TIMING ON SELECT * FROM dumpy WHERE...

    韩顺平oracle学习笔记

    概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。 create user 用户名 identified by 密码; 2.给用户修改密码 概述:如果给自己修改密码可以直接使用 sql&gt;...

    使用Oracle数据库时的Web分页方法

    以一个具体的例子来说明,假设我们有一个行业产品表,包含10万条记录,字段有产品名称、所在行业和市场价格。当用户选择某个行业时,我们需要列出该行业所有产品,并按照产品名称排序,如果记录超过20条,则分页显示...

    SQL性能优化

     以上两个SQL中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,第一条SQL的dy_dj = '1KV以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,在进行第一条SQL的...

    认识oracle.ppt

    Oracle 10g是Oracle数据库的一个重要版本,提供了许多增强的功能,包括数据仓库优化、网格计算支持以及高级安全性特性。 课程安排覆盖了理论学习和实践操作,总计32学时,其中理论课24学时,实验课8学时。推荐的...

    Oracle的DevOps实战.pdf

    该查询执行时间长达5788秒,逻辑读取达到10亿个数据块,返回21万行数据。SQL语句相当复杂,包括一个"Not In"子查询,这是性能问题的主要来源。 "Not In"子查询在数据库优化中常常被视为性能杀手,因为它会导致全表...

    Oracle数据库实用教程(第二版).ppt

    总的来说,《Oracle数据库实用教程(第二版)》为读者提供了一个全面的学习路径,涵盖了Oracle 10g的体系结构、基本操作、安全管理、数据备份与恢复、性能调优等多个方面,是学习和掌握Oracle数据库管理的宝贵资源。

    GP开发文档Oracle开发文档

    而当达到10万个以上时,性能将显著降低。 - **索引使用**: 不推荐建立索引,包括但不限于普通索引、唯一索引、主键等。 - **临时表管理**: 使用后的临时表应及时删除,以避免占用不必要的资源。 - **分区表策略**: ...

    ORACLE安装方法

    而“爱书吧-2万本图书免费下载.url”可能是指向一个图书下载网站的链接,可能包含更多关于Oracle和其他IT领域的书籍资源。 总之,安装Oracle 11g在Linux上需要耐心和细心,每个步骤都至关重要,遵循官方文档和最佳...

    The eighth skills of SQL design by DB Query Analyzer

    经过四年多的研究、设计、开发,并在Oracle、Sybase、DB2、Informix、MS SQL Server、Mysql、MS ACCESS、FoxPro和Paradox等众多数据库系统上进行了约三个月的集成测试后,于2007年面世。自那时以来,该工具的功能和...

    penguinsdbtools:ORACLE,MYSQL,SQLSERVER,POSTGRE,DB2,SYBASE,SQLLITE-开源

    每分10万件以上表数据前后对比输出结果。 ■测试环境: i3 2.53GZ MEM 2G ORACLE11G TBL 10column record length 1000byte cuishuangjia@gmail.com 企鹅群:数据库第三方工具交流 184715368 更多使用文档说明和...

    船期管理数据库存储过程

    在描述中提到的“遗留SQL”意味着我们正在处理旧有的SQL代码,这可能是在Oracle数据库上运行的自定义查询或存储过程。这些SQL语句可能随着时间的推移而积累,形成了超过1万行的代码量,这在维护和升级时会带来挑战。...

Global site tag (gtag.js) - Google Analytics