做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了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;
分享到:
相关推荐
### 核心知识点:使用一条SQL语句快速生成10万条测试数据 #### 1. 使用`CONNECT BY LEVEL`生成连续行 在Oracle中,`CONNECT BY LEVEL`是一个非常强大的功能,它可以用来生成连续的行数据。在这个例子中,我们使用...
因此,本篇文章将详细介绍如何利用Oracle数据库快速生成10万条测试数据。 #### 一、Oracle数据库生成测试数据的方法 Oracle是一种广泛使用的商业关系型数据库管理系统,它提供了强大的数据管理和处理能力。对于...
首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...
本教程将详细讲解如何将Oracle的一个大数据表快速迁移到SQL Server 2008数据库,采用的方法是通过SQL Server Integration Services (SSIS) 的导入和导出向导。 首先,确保你的SQL Server 2008 R2服务器已经安装了...
本文将详细讲解如何使用JDBC批量插入10万条数据,并探讨其背后的原理和优化策略。 批量处理在JDBC中主要通过Statement对象的`addBatch()`和`executeBatch()`两个方法实现。在示例代码中,我们创建了一个`...
DBExport是一个专门设计用于Oracle数据库的工具,它能够快速高效地导出表结构和数据。标题中的"DBExport2.51 For ORACLE"指的是该工具的特定版本,适用于Oracle数据库,版本号为2.51。这个工具提供了直观的界面和...
接着,使用一个PL/SQL块来插入100万条随机数据,为了提高性能,每插入1000条数据就进行一次提交。 ##### 测试查询性能 为了测试查询效率,可以运行以下SQL命令: ```sql SET TIMING ON SELECT * FROM dumpy WHERE...
概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。 create user 用户名 identified by 密码; 2.给用户修改密码 概述:如果给自己修改密码可以直接使用 sql>...
以一个具体的例子来说明,假设我们有一个行业产品表,包含10万条记录,字段有产品名称、所在行业和市场价格。当用户选择某个行业时,我们需要列出该行业所有产品,并按照产品名称排序,如果记录超过20条,则分页显示...
以上两个SQL中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,第一条SQL的dy_dj = '1KV以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,在进行第一条SQL的...
Oracle 10g是Oracle数据库的一个重要版本,提供了许多增强的功能,包括数据仓库优化、网格计算支持以及高级安全性特性。 课程安排覆盖了理论学习和实践操作,总计32学时,其中理论课24学时,实验课8学时。推荐的...
该查询执行时间长达5788秒,逻辑读取达到10亿个数据块,返回21万行数据。SQL语句相当复杂,包括一个"Not In"子查询,这是性能问题的主要来源。 "Not In"子查询在数据库优化中常常被视为性能杀手,因为它会导致全表...
总的来说,《Oracle数据库实用教程(第二版)》为读者提供了一个全面的学习路径,涵盖了Oracle 10g的体系结构、基本操作、安全管理、数据备份与恢复、性能调优等多个方面,是学习和掌握Oracle数据库管理的宝贵资源。
而当达到10万个以上时,性能将显著降低。 - **索引使用**: 不推荐建立索引,包括但不限于普通索引、唯一索引、主键等。 - **临时表管理**: 使用后的临时表应及时删除,以避免占用不必要的资源。 - **分区表策略**: ...
而“爱书吧-2万本图书免费下载.url”可能是指向一个图书下载网站的链接,可能包含更多关于Oracle和其他IT领域的书籍资源。 总之,安装Oracle 11g在Linux上需要耐心和细心,每个步骤都至关重要,遵循官方文档和最佳...
经过四年多的研究、设计、开发,并在Oracle、Sybase、DB2、Informix、MS SQL Server、Mysql、MS ACCESS、FoxPro和Paradox等众多数据库系统上进行了约三个月的集成测试后,于2007年面世。自那时以来,该工具的功能和...
每分10万件以上表数据前后对比输出结果。 ■测试环境: i3 2.53GZ MEM 2G ORACLE11G TBL 10column record length 1000byte cuishuangjia@gmail.com 企鹅群:数据库第三方工具交流 184715368 更多使用文档说明和...
在描述中提到的“遗留SQL”意味着我们正在处理旧有的SQL代码,这可能是在Oracle数据库上运行的自定义查询或存储过程。这些SQL语句可能随着时间的推移而积累,形成了超过1万行的代码量,这在维护和升级时会带来挑战。...